最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一個關(guān)于JS正則匹配的踩坑記錄

 更新時間:2021年04月13日 11:22:42   作者:我叫宋大宗  
這篇文章主要給大家介紹了一個關(guān)于JS正則匹配的踩坑記錄,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

最近發(fā)現(xiàn)在JS里的正則匹配有一個坑,而且當(dāng)時很莫名奇妙,一度讓我懷疑出現(xiàn)了靈異事件。

下面是踩坑代碼

   var str=["二七1","二七2","金水","二七3","二七4","二七5"]
        var reg=new RegExp("二七","g");
        for(var i=0;i<str.length;i++){
            if(reg.test(str[i])){
                console.log(str[i])
            }
        }

我用正則對str進行全局匹配,當(dāng)滿足的時候打印出來,于是乎我就得到了這個

莫名的少了兩個,然后我對它進行單獨的判斷

      var str=["二七1","二七2","金水","二七3","二七4","二七5"]
        var reg=new RegExp("二七","g");
        for(var i=0;i<str.length;i++){
            if(reg.test(str[i])){
                console.log(str[i])
            }
            if(i==1){
                console.log(reg.test(str[i]))
            }
            if(i==4){
                console.log(reg.test(str[i]))
            }
        }

于是我得到了這個

又少了一個,但可以看到之前所缺失的兩個是滿足正則判斷的,然后我在網(wǎng)上找到了下面這段話:

如果在正則匹配中成功匹配到字符串,lastIndex會被設(shè)置為第一次匹配到的字符串的位置,以作為字符串全局匹配下次檢索的起點,如果后面字段還能匹配成功,那么lastIndex會被反復(fù)重新賦值,直到匹配失敗,它會被重置為0;

但我去請教了一下我的老師,他告訴我的是匹配到后是將lastIndex+1返回過去,也就是當(dāng)我第一次匹配到后,lastIndex是2,這個2是字符串里的下標(biāo),而不是數(shù)組的下標(biāo),所以在對str[1]進行判斷時是從字符串下標(biāo)為2的開始,而不是從0開始,所以第二次判斷為false,這時匹配失敗,lastIndex被置為0,所以第三次可以匹配成功。

所以在判斷結(jié)果為true后將lastIndex置為0,這樣數(shù)據(jù)就正常了。

數(shù)據(jù)就正常了。

總結(jié)

如果使用全局匹配,那么在每一次查到后將lastIndex置零,或者不使用全局匹配,直接匹配即可。

這里奉上網(wǎng)友的總結(jié):

lastIndex從字面上來講就是最后一個索引,實際上它的意思是正則表達式開始下一次查找的索引位置,第一次的時候總是為0的,第一次查找完了的時候會把lastIndex的值設(shè)為匹配到得字符串的最后一個字符的索引位置加1,第二次查找的時候會從lastIndex這個位置開始,后面的以此類推。如果沒有找到,則會把lastIndex重置為0。要注意的是,lastIndex屬性只有在有全局標(biāo)志正則表達式中才有作用,如果我們把上面代碼中正則表達式的g標(biāo)志去掉,那么三次彈出的就都是true了。

需要的朋友可以參考下,到此這篇關(guān)于一個關(guān)于JS正則匹配的踩坑記錄的文章就介紹到這了,更多相關(guān)JS正則匹配踩坑內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 學(xué)習(xí)JS中的DOM節(jié)點以及操作

    學(xué)習(xí)JS中的DOM節(jié)點以及操作

    本篇文章給大家整理了關(guān)于JS中DOM節(jié)點的相關(guān)知識點以及代碼實例,有興趣的朋友可以跟著學(xué)習(xí)下。
    2018-04-04
  • jquery獲取radio值(單選組radio)

    jquery獲取radio值(單選組radio)

    jquery獲取radio值使用到特殊的選擇器type=radio,為方便大家理解,另附一個jquery實例,想學(xué)習(xí)的朋友可以看看
    2014-10-10
  • echarts展示區(qū)域地圖添加紋理圖片操作指南

    echarts展示區(qū)域地圖添加紋理圖片操作指南

    這篇文章主要給大家介紹了關(guān)于echarts展示區(qū)域地圖添加紋理圖片操作的相關(guān)資料,ECharts地圖組件支持使用圖片作為地圖區(qū)域的填充紋理,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • 微信小程序?qū)崿F(xiàn)商品屬性聯(lián)動選擇

    微信小程序?qū)崿F(xiàn)商品屬性聯(lián)動選擇

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)商品屬性聯(lián)動選擇,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • JavaScript+CSS實現(xiàn)唯美蝴蝶動畫

    JavaScript+CSS實現(xiàn)唯美蝴蝶動畫

    這篇文章主要介紹了JavaScript+CSS實現(xiàn)唯美蝴蝶動畫,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-07-07
  • JavaScript中三種引入方式的使用詳解

    JavaScript中三種引入方式的使用詳解

    JavaScript(簡稱“JS”)是一種具有函數(shù)優(yōu)先的輕量級,解釋型或即時編譯型的編程語言,本文主要為大家介紹了JavaScript中三種常見引入方式,希望對大家有所幫助
    2024-01-01
  • 如何用js實現(xiàn)判斷是否是小數(shù)

    如何用js實現(xiàn)判斷是否是小數(shù)

    這篇文章主要給大家介紹了關(guān)于如何用js實現(xiàn)判斷是否是小數(shù)的相關(guān)資料,文中介紹了如何通過使用isNaN()函數(shù)和使用正則表達式來解決,具有一定參考借鑒價值,需要的朋友可以參考下
    2024-04-04
  • 在JavaScript中使用inline函數(shù)的問題

    在JavaScript中使用inline函數(shù)的問題

    在JavaScript中使用inline函數(shù)的問題...
    2007-03-03
  • 微信小程序之多列表的顯示和隱藏功能【附源碼】

    微信小程序之多列表的顯示和隱藏功能【附源碼】

    今天在項目碰到一個問題,之前在項目首頁實現(xiàn)單列表的顯示和隱藏,通過wx:if判斷就可實現(xiàn),現(xiàn)在要實現(xiàn)多列表的單項顯示和隱藏功能應(yīng)該如何實現(xiàn)呢?下面小編給大家?guī)砹宋⑿判〕绦蛑嗔斜淼娘@示和隱藏功能,感興趣的朋友一起看看吧
    2018-08-08
  • 微信小程序分包加載的實現(xiàn)代碼

    微信小程序分包加載的實現(xiàn)代碼

    分包加載是一種小程序優(yōu)化技術(shù),將小程序不同功能的代碼,分別打包成不同的子包,在構(gòu)建時打包成不同的分包,用戶在使用時按需進行加載,在構(gòu)建小程序分包項目時,構(gòu)建會輸出一個或多個分包,這篇文章主要介紹了微信小程序---分包加載,需要的朋友可以參考下
    2024-07-07

最新評論

涿鹿县| 涡阳县| 项城市| 承德市| 集贤县| 恩施市| 永仁县| 科技| 衡阳市| 大理市| 洛浦县| 卓资县| 上饶市| 龙岩市| 金湖县| 嘉荫县| 武宁县| 望奎县| 光山县| 镇江市| 洪洞县| 阳曲县| 甘谷县| 四川省| 成武县| 西乌珠穆沁旗| 丰镇市| 库尔勒市| 沛县| 恭城| 筠连县| 马鞍山市| 新巴尔虎右旗| 胶南市| 福贡县| 竹山县| 通许县| 贡嘎县| 宁化县| 长汀县| 平阳县|