0

我有以下字符串值: £-155 (-2.2%)

除此之外,我希望能够提取任何数字并且可能/可能不包含“-”减号。所以上面是:-2.2

我还需要知道该值是否具有上述形式的百分比......最终代码中将使用条件语句。

想法?

4

3 回答 3

0

为什么要对这么简单的事情使用正则表达式?为什么不直接抓取字符串中的最后一个字符并检查它是数字还是 %。

同样,如果要删除它,只需使用 .substr() 方法从字符串中删除最后一个字符:

http://www.w3schools.com/jsref/jsref_substr.asp

于 2012-08-16T16:32:15.553 回答
0

你基本上想要一个匹配一个数字的正则表达式,这个数字之前已经回答过 很多 了。

然后,一旦你有了它,只需添加一个可选的百分比符号 ( %?) 并检查它是否存在于匹配的字符串中。

于 2012-08-16T16:32:18.160 回答
0
// An optional sign and either an integer followed by an optional fraction
// or a decimal fraction.
var numberRe = '[+-]?(?:[0-9]+(?:[.][0-9]*)?|[.][0-9]+)';

// Matches a number (in group 1)
// and an optional percentage in parentheses (in group 2).
var quantity = new RegExp(
    '(' + numberRe + ')(?:\\s*[(]\\s*(' + numberRe + ')\\s*%\\s*[)])?'); 

如果你匹配,quantity你应该得到第 1 组中的数字和第 2 组中的任何百分比。

JSON.stringify(quantity.exec('£-155 (-2.2%)'))
["-155 (-2.2%)", "-155", "-2.2"]

要将它们作为数字获取,请使用parseFloat或一元+,如

var match = quantity.exec('£-155 (-2.2%)');
var n = +match[1], pct = match[2] != null ? +match[2] / 100 : NaN;
alert('n = ' + n + ', whole = ' + (pct ? n / pct : "unknown"));
于 2012-08-16T16:32:26.190 回答