大家都告诉我,如果我有一个像/blah/g
这样的正则表达式,我反复exec
它在一个字符串上,我会经历所有的比赛,直到我结束。查找所有的正则表达式匹配
但是如果我正则表达式是/^$/g
和我的字符串是""
?那什么?
这工作得很好:
var re = /bar/g,
str = "foobarfoobar";
while ((match = re.exec(str)) != null) {
alert("match found at " + match.index);
}
这进入一个无限循环!
var re = /^$/g,
str = "";
while ((match = re.exec(str)) != null) {
alert("match found at " + match.index);
}
为什么,Javascript?为什么?
(更重要的是,如何在地球上我应该通过一个正则表达式匹配的迭代,如果我正则表达式中包含^$
和我的字符串也可能会被空字符串???)
不用其他的'/ M'改性剂,在'/^$/G 'regex没有多大意义,因为'/ g'搜索多个匹配,但只能有一个匹配。 –
你需要支持任何用户生成的正则表达式或'^ $'为它没有任何意义遍历任何东西只是一个特例? – Aprillion
由于您没有捕获组,所以''exec'不需要'while'。你可以用'match' – Oriol