javascript 正則表達式中 中括號的“坑”


在javascript中使用正則時需要注意中括號里邊的一個坑,那就是中括號內的元字符問題。自己踩到坑了,網上搜了一下還有不少人踩了這個坑,所以大概說一下。

中括號在正則中稱為字符組(Character class),有的書翻譯為字符類,還有的翻譯成字符集。我覺得字符組更好點,畢竟class在計算機屬於中代表面向對象里的“類”。顧名思義,字符組為一組字符,它表示在一個位置里可能出現的多種字符。注意這里強調只匹配一個位置哦。(此段摘自-http://www.cnblogs.com/snandy/p/3662423.html)

 

用到一個取任意字符的地方,於是用了[.\n]*   結果  test一下 返回true,但是放到具體的環境當中不對。。。。。。哎呀我去,不可以理解了。

果斷測試一下   var testp = /xx>[.\n]*/    testp.test("xx>asdfdfasd");  果斷還是 true,把"xx>"放后面也是true,但是,兩邊都放上就是false。這是為什么呢??????

 

於是又重新 搞下var testp = /(xx>[.\n]*)/這個,改一下加個括號就可以捕獲匹配的串串了。test完了,RegExp.$1一下特么發現 是空。。。。。是空。。。。為啥呢????

當把test的字符串參數變成("...........")時,這串點出現了,所以呢,這個中括號里邊點就只代表點,不代表別的,不是元字符除\n以外的單字符的意思了。於是網上搜了一下:

“很多元字符在字符組內都變成了普通字符”  對它變成了普通字符了,而不是元字符了,還有其他的像  "?","+","*"這幾個一旦放到中括號也變成了普通的字符了。

所以這個坑還是要當心啊。。。。

 

對了,任意字符可以用 [\s\S]代替。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM