萬盛學電腦網

 萬盛學電腦網 >> 腳本專題 >> javascript >> javascript正則表達式容易被忽略的小問題整理

javascript正則表達式容易被忽略的小問題整理

小問題:lastIndex只對exec()和test()方法起作用,string.match(regexp)是不會影響regexp這個正則的lastIndex屬性的,具體祥看本文  

一、中括號[]裡面的特殊字符是不用轉義的,例如[/]、[.]、[*]、[?]、[+]都是可以直接匹配對應的字符 . *?+。下面是測試結果:

所以,/[d.]/這個正則表達式實際上是匹配數字字符或者字符".",作用等同於/[d.]/

二、match()和exec()的區別

二者的區別主要在於正則表達式在設置了全局標識符g的情況。

如果沒有設置全局標識符g,那麼調用string.match(regexp)的結果和調用regexp.exec(string)的結果是相同的,

但在設置了全局標識符g時,string.match(regexp)會把所有的匹配都放入結果數組中,regexp.exec(string)的結果則只給出第一個成功的匹配。

而用regexp.lastIndex屬性來記錄下一次匹配開始的位置。測試如下:

PS:另外要注意的是lastIndex只對exec()和test()方法起作用,string.match(regexp)是不會影響regexp這個正則的lastIndex屬性的。

copyright © 萬盛學電腦網 all rights reserved