JavaScript正则表达式 - g修饰符不起作用

时间:2010-09-02 14:56:45

标签: javascript regex

我有以下代码:

var str = "4 shnitzel,5 ducks";
var rgx = new RegExp("[0-9]+","g");
console.log( rgx.exec(str) );

chrome和firefox的输出为["4"]

为什么我没有得到结果["4","5"]

2 个答案:

答案 0 :(得分:6)

exec仅搜索下一场比赛。您需要多次调用才能获得所有匹配项:

  

如果正则表达式使用“g”标志,则可以多次使用exec方法在同一个字符串中查找连续匹配。

您可以执行此操作以查找与exec的所有匹配项:

var str = "4 shnitzel,5 ducks",
    re = new RegExp("[0-9]+","g"),
    match, matches = [];
while ((match = re.exec(str)) !== null) {
    matches.push(match[0]);
}

或者您只需在字符串`str:

上使用match method
var str = "4 shnitzel,5 ducks",
    re = new RegExp("[0-9]+","g"),
    matches = str.match(re);

顺便说一句:使用RegExp literal syntax /…/可能更方便:/[0-9]+/g

答案 1 :(得分:2)

exec()始终只返回一个匹配项。你可以获得进一步的匹配,你需要反复调用exec。

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/RegExp/exec