RegEx从字符串中提取所有实数

时间:2014-02-13 10:04:44

标签: javascript regex

JavaScript中的这个正则表达式只返回给定字符串中的第一个实数,我期望数组为2,因为我正在使用/ g。我的错误在哪里?

/[-+]?[0-9]*\.?[0-9]+/g.exec("-8.075090 -35.893450( descr)")

返回:

["-8.075090"]

2 个答案:

答案 0 :(得分:2)

试试这段代码:

var input = "-8.075090 -35.893450( descr)";
var ptrn = /[-+]?[0-9]*\.?[0-9]+/g;
var match;
while ((match = ptrn.exec(input)) != null) {
    alert(match);
}

演示

http://jsfiddle.net/kCm4z/

讨论

exec方法仅返回第一次匹配。必须重复调用它,直到它为gettting所有匹配返回null。

或者,正则表达式可以这样写:

/[-+]?\d*\.?\d+/g

答案 1 :(得分:1)

String.prototype.match为您提供所有匹配项:

var r = /[-+]?[0-9]*\.?[0-9]+/g
var s = "-8.075090 -35.893450( descr)"

console.log(s.match(r))
//=> ["-8.075090", "-35.893450"]