大家都告訴我,如果我有一個像/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