可能重複:
Interesting test of Javascript RegExp
Regular expression test can't decide between true and false (JavaScript)爲什麼相同的RegExp行爲有所不同?
Example of issue。當內聯運行時,結果如我所料。但是,當作爲變量存儲時,它將跳過中間跨度元素。
// Inline RegExp
function getToggleClasses() {
var toggler = [],
elements = document.getElementsByTagName("*"),
i=0,
len = elements.length;
for (i; i < len; i++) {
if (/toggler/g.test(elements[i].className)) {
toggler.push(elements[i]);
}
}
document.getElementById('results').innerHTML += "<br />Inline: " + toggler.length;
}
// Variable
function getToggleClasses2() {
var toggler = [],
elements = document.getElementsByTagName("*"),
tester = /toggler/g,
i=0,
len = elements.length;
for (i; i < len; i++) {
if (tester.test(elements[i].className)) {
toggler.push(elements[i]);
}
}
document.getElementById('results').innerHTML += "<br />Variable: " + toggler.length;
}
標記:
<span class="toggler">A</span>
<span class="toggler">B</span>
<span class="toggler">C</span>
鑑於: 我明白沒有理由要使用正規做這種比較,我也明白了很大的庫如jQuery的怎麼樣了。我也知道在這種情況下不需要g
。
我不明白爲什麼這兩種方法應該返回不同的結果。
這只是個人偏好,但我認爲它會提高清晰度,使括號圍繞在正文上調用函數時具有標誌的正則表達式文字。 – JAB
@apillers,你是對的。你尋找什麼來找到那些?我找不到要搜索的內容以獲得我之前的結果。 – Joe
我騙了一點,並搜索'[javascript]正則表達式測試lastindex' - 我確信這個問題之前已經被問過,我知道答案會包含文字'lastIndex'。這是一個很好的例子,表明存在重複問題並不一定表明提問者是疏忽的;你已經提出了一個好的問題來解決一個難以搜索的問題。 – apsillers