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

詳談lastIndex對(duì)正則結(jié)果的影響

 更新時(shí)間:2017年11月10日 08:48:58   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇詳談lastIndex對(duì)正則結(jié)果的影響。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

前言

今天遇到一個(gè)問(wèn)題,用正則表達(dá)式去檢查同一個(gè)字符串時(shí),交替返回true和false。無(wú)奈之下,重新翻了翻權(quán)威指南,發(fā)現(xiàn)罪魁禍?zhǔn)自瓉?lái)是lastIndex??稍诳刂婆_(tái)嘗試下

let reg = /[\d]/g
//undefined
reg.test(1)
//true
reg.test(1)
//false

lastIndex

lastIndex在權(quán)威指南中是如下解釋?zhuān)核且粋€(gè)可讀/寫(xiě)的整數(shù)。如果匹配模式帶有g(shù)修飾符,這個(gè)屬性存儲(chǔ)在整個(gè)字符串中下次索引的開(kāi)始位置,這個(gè)屬性會(huì)被exec()和test()用到。還是上面的例子,觀察下lastIndex屬性

let reg = /[\d]/g  //有修飾符g
//undefined
reg.lastIndex
//0
reg.test(1)   
//true
reg.lastIndex  //匹配一次后,lastIndex改變
//1
reg.test(1)  //從index 1 開(kāi)始匹配
//false
reg.lastIndex
//0
reg.test(1)
//true
reg.lastIndex
//1

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

解決

1、不使用 g 修飾符

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

2、test()之后手動(dòng)設(shè)置lastIndex = 0

以上這篇詳談lastIndex對(duì)正則結(jié)果的影響就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

买车| 阜新| 抚宁县| 平遥县| 阳东县| 确山县| 哈密市| 安康市| 准格尔旗| 涟源市| 肥乡县| 尉犁县| 阿克陶县| 绥棱县| 无锡市| 清丰县| 辽宁省| 沙雅县| 信丰县| 依安县| 宜兴市| 康马县| 永福县| 淮阳县| 井冈山市| 内乡县| 张北县| 布尔津县| 普宁市| 济南市| 临漳县| 和平县| 开远市| 邵东县| 五常市| 博爱县| 阜新| 阜宁县| 商洛市| 班玛县| 太和县|