詳談lastIndex對正則結果的影響

來源:互聯網
上載者:User
用Regex去檢查同一個字串時,交替返回true和false。無奈之下,重新翻了翻權威指南,發現罪魁禍首原來是lastIndex。本文就和大家一起分享一下lastIndex對正則結果的影響。

let reg = /[\d]/g//undefinedreg.test(1)//truereg.test(1)//false


lastIndex

lastIndex在權威指南中是如下解釋:它是一個可讀/寫的整數。如果匹配模式帶有g修飾符,這個屬性儲存區在整個字串中下次索引的開始位置,這個屬性會被exec()和test()用到。還是上面的例子,觀察下lastIndex屬性


let reg = /[\d]/g  //有修飾符g//undefinedreg.lastIndex//0reg.test(1)   //truereg.lastIndex  //匹配一次後,lastIndex改變//1reg.test(1)  //從index 1 開始匹配//falsereg.lastIndex//0reg.test(1)//truereg.lastIndex//1


第一次使用test()匹配成功後,lastIndex被設為匹配到的結束位置,就是1;第二次再test()時,從index 1 開始匹配,匹配失敗,lastIndex重設為0 。這樣就造成了匹配結果與預期不符

解決

1、不使用 g 修飾符


reg = /[\d]////[\d]/reg.test(1)//truereg.test(1)//truereg.lastIndex//0reg.test(1)//truereg.lastIndex


2、test()之後手動設定lastIndex = 0

以上內容就是lastIndex對正則結果的影響,希望能協助到大家。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.