盤點javascript Regex中 中括弧的【坑】,Regex中括弧

來源:互聯網
上載者:User

盤點javascript Regex中 中括弧的【坑】,Regex中括弧

在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]代替。

以上這篇盤點javascript Regex中 中括弧的【坑】就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援幫客之家。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.