【发布时间】:2014-02-13 10:04:44
【问题描述】:
JavaScript 中的这个正则表达式只返回给定字符串中的第一个实数,我期望一个两个数组,因为我正在使用 /g。我的错在哪里?
/[-+]?[0-9]*\.?[0-9]+/g.exec("-8.075090 -35.893450( descr)")
返回:
["-8.075090"]
【问题讨论】:
标签: javascript regex
JavaScript 中的这个正则表达式只返回给定字符串中的第一个实数,我期望一个两个数组,因为我正在使用 /g。我的错在哪里?
/[-+]?[0-9]*\.?[0-9]+/g.exec("-8.075090 -35.893450( descr)")
返回:
["-8.075090"]
【问题讨论】:
标签: javascript regex
试试这个代码:
var input = "-8.075090 -35.893450( descr)";
var ptrn = /[-+]?[0-9]*\.?[0-9]+/g;
var match;
while ((match = ptrn.exec(input)) != null) {
alert(match);
}
exec 方法只返回 first 匹配。必须重复调用它,直到它返回 null 以获取所有匹配项。
或者,正则表达式可以这样写:
/[-+]?\d*\.?\d+/g
【讨论】:
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"]
【讨论】:
exec 方法对我不起作用。但出于实际目的,String.match 是我所需要的。