正則匹配

1.test在全局匹配下,連續(xù)的執(zhí)行會報錯,例如:

var reg = /a/g
reg.test('a')  //true
reg.test('a')  //false

原因是lastIndex導(dǎo)致出錯,但是具體是為啥,我還沒搞懂,先留著,以后弄懂了再補(bǔ)上。不過總而言之,test只是匹配是否存在,沒必要用全局g,不用就是了。

2.貪婪.*和非貪婪.*?

簡單理解就是,盡可能多和盡可能少的匹配。當(dāng)匹配的值比較長和復(fù)雜的時候,有可能會出現(xiàn)重復(fù)尾部匹配的情況,非貪婪匹配能更精準(zhǔn)的匹配。比如:

'abbb4bbb4'.match(/a.*4/)  // ['abbb4bbb4']
'abbb4bbb4'.match(/a.*?4/)  // ['abbb4']

3.?:、?=?!

?:作用是在分組匹配的時候,不占用一個組位。實用性的話,我想了半天也沒想出什么地方用比較合適,只能舉一個大概會用到的例子。

//匹配家庭號碼
'07956533869'.replace(/(\d{3,4})(\d{7,8})/,'$1')  
//'0795' 返回的是區(qū)號
'07956533869'.replace(/(?:\d{3,4})(\d{7,8})/,'$1')  
//'6533869' 返回的是電話號碼

?=?!就是在匹配的時候,需要匹配該字符存在或不存在,但是不需要后續(xù)的操作

'12px'.match(/\d+(?=px)/) //['12']
'12px 13rem'.match(/\s\d+(?!px)/)  //[' 13']

//這個兩個規(guī)則只能在后面匹配,不能在前面匹配,這我不知道為啥
'12px'.match(/(?=\d)px/) //null
'12px 13px'.match(/(?!\d)px/)  //'px'
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、示例 匹配網(wǎng)址url 匹配手機(jī)號碼 匹配固話 匹配身份證號碼 匹配密碼 匹配一年的12個月 匹配一個月的31天...
    喜寶_c72d閱讀 1,660評論 0 0
  • 正則表達(dá)式匹配規(guī)則 Python 的 re 模塊 在 Python 中,我們可以使用內(nèi)置的 re 模塊來使用正則表...
    ztfdeveloper閱讀 387評論 0 0
  • 在編寫正則之前,需要羅列出所有可能存在的情況 協(xié)議, 分別有 https,http,ftp 出現(xiàn)的次數(shù)是 0-1 ...
    小樓聽冬雨閱讀 25,155評論 1 1
  • 今天用到了一個 js驗證 輸入手機(jī)號的,但要有一個萬能的 400 800 等座機(jī) 移動聯(lián)通小靈通手機(jī)號的正則式: ...
    eyuxiog閱讀 553評論 0 0
  • 121天 今日金句 For though elated by his rank, it did not rende...
    123逍遙游閱讀 267評論 0 0

友情鏈接更多精彩內(nèi)容