盤點javascript 正則表達式中 中括號的【坑】
在javascript中使用正則時需要注意中括號里邊的一個坑,那就是中括號內(nèi)的元字符問題。自己踩到坑了,網(wǎng)上搜了一下還有不少人踩了這個坑,所以大概說一下。
中括號在正則中稱為字符組(Character class),有的書翻譯為字符類,還有的翻譯成字符集。我覺得字符組更好點,畢竟class在計算機屬于中代表面向?qū)ο罄锏摹邦悺?。顧名思義,字符組為一組字符,它表示在一個位置里可能出現(xiàn)的多種字符。注意這里強調(diào)只匹配一個位置哦。(此段摘自-http://www.cnblogs.com/snandy/p/3662423.html)
用到一個取任意字符的地方,于是用了[.\n]* 結(jié)果 test一下 返回true,但是放到具體的環(huán)境當中不對。。。。。。哎呀我去,不可以理解了。
果斷測試一下 var testp = /xx>[.\n]*/ testp.test("xx>asdfdfasd"); 果斷還是 true,把"xx>"放后面也是true,但是,兩邊都放上就是false。這是為什么呢??????
于是又重新 搞下var testp = /(xx>[.\n]*)/這個,改一下加個括號就可以捕獲匹配的串串了。test完了,RegExp.$1一下特么發(fā)現(xiàn) 是空。。。。。是空。。。。為啥呢????
當把test的字符串參數(shù)變成("...........")時,這串點出現(xiàn)了,所以呢,這個中括號里邊點就只代表點,不代表別的,不是元字符除\n以外的單字符的意思了。于是網(wǎng)上搜了一下:
“很多元字符在字符組內(nèi)都變成了普通字符” 對它變成了普通字符了,而不是元字符了,還有其他的像 "?","+","*"這幾個一旦放到中括號也變成了普通的字符了。
所以這個坑還是要當心啊。。。。
對了,任意字符可以用 [\s\S]代替。
以上這篇盤點javascript 正則表達式中 中括號的【坑】就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript實現(xiàn)網(wǎng)頁對象拖放功能的方法
這篇文章主要介紹了JavaScript實現(xiàn)網(wǎng)頁對象拖放功能的方法,涉及javascript針對瀏覽器的判斷、事件愛你的添加與移除等相關(guān)操作技巧,非常具有實用價值,需要的朋友可以參考下2015-04-04
使用JavaScript獲取Django模板指定鍵值數(shù)據(jù)
這篇文章主要介紹了使用JavaScript獲取Django模板指定鍵值數(shù)據(jù),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-05-05

