JavaScript正则表达式-g修饰符不';行不通

JavaScript正则表达式-g修饰符不';行不通,javascript,regex,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”]?exec()总是只返回一个匹配项。您需要反复调用exec才能获得更多匹配项 只搜索下一个匹配项。您需要多次调用它以获取所有匹配项: 如果正则表达式使用“g”标志,则可以多次使用exec方法来查找同一

我有以下代码:

var str = "4 shnitzel,5 ducks";
var rgx = new RegExp("[0-9]+","g");
console.log( rgx.exec(str) );
chrome和firefox上的输出是
[“4”]

为什么我得不到结果
[“4”,“5”]

exec()
总是只返回一个匹配项。您需要反复调用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:

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

顺便说一下:使用可能更方便:
/[0-9]+/g

如果正则表达式使用“g”标志,则可以多次使用exec方法来查找同一字符串中的连续匹配项。执行此操作时,搜索从正则表达式的lastIndex属性指定的str子字符串开始(测试也将推进lastIndex属性)。