2016-07-23 154 views
1

請參見下面的示例和糾正我,如果我做錯了,的Javascript正則表達式沒有返回正確的結果

let _regex = new RegExp("L", "gi"); 
 
var strings = ["List", "List Items", "List attachments"]; 
 
for (let i = 0; i < strings.length; i++) { 
 
    if (_regex.test(strings[i])) { 
 
    console.log(strings[i]); 
 
    } 
 
}

預期的結果是:所有3個結果 但僅記錄兩個List和列表附件

回答

3

正則表達式是可變對象。 test方法將改變lastIndex屬性,當發生這種情況時,第一個索引已經被檢查,所以數組中的第二項不會檢查該索引。由於在這一點上沒有發現索引重置爲零,這就是爲什麼最後一個項目也工作。您可以在每一步重置索引:

for (let i = 0; i < strings.length; i++) { 
    _regex.lastIndex = 0; // reset index 
    if (_regex.test(strings[i])) { 
    console.log(strings[i]); 
    } 
} 

或者只是使用文字正則表達式:

for (let i = 0; i < strings.length; i++) { 
    if (/L/gi.test(strings[i])) { 
    console.log(strings[i]); 
    } 
} 
+0

太謝謝你了... @elclanrs –

相關問題