婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 淺析正則表達式中的lastIndex以及預查

淺析正則表達式中的lastIndex以及預查

熱門標簽:西藏智能外呼系統代理商 梅縣地圖標注 ai電話機器人搭建 甘肅醫療外呼系統排名 貴港公司如何申請400電話 地圖標注教學點 外呼系統無呼出路由是什么原因 呼叫系統外呼只能兩次 400電話辦理電話辦理

依次寫出下列輸出內容。

var reg1 = /a/;
var reg2 = /a/g;
console.log(reg1.test('abcabc')); // true
console.log(reg1.test('abcabc')); // true
console.log(reg1.test('abcabc')); // true
console.log(reg1.test('abcabc')); // true
console.log(reg2.test('abcabc')); // true
console.log(reg2.test('abcabc')); // true
console.log(reg2.test('abcabc')); // false
console.log(reg2.test('abcabc')); // true

很簡單的一個正則表達式測試,查找字符串abcabc中是否有字符a。但是結果卻有一個特殊false存在,Why?

lastIndex(針對于帶參數g的正則表達式)

在每個實例化的RegExp對象中,都存在一個lastIndex屬性,其初始值為0。

/a/.lastIndex // 0
new RegExp('a').lastIndex // 0
lastIndex表示匹配成功時候,匹配內容最后一個字符所在原字符串中的位置 + 1,也就是匹配內容的下一個字符的index(如果匹配內容在字符串的結尾,同樣返回原字符串中的位置 + 1,也就是字符串的length)。如果未帶參數g,lastIndex始終為0。
var reg = /ab/g;
reg.test('123abc');
console.log(reg.lastIndex) // 5
// 匹配內容在最后
var reg = /ab/g;
reg.test('123ab');
console.log(reg.lastIndex) // 5
// 不帶參數g
var reg = /ab/;
reg.test('123abc');
console.log(reg.lastIndex) // 0

而這個lastIndex也就是用該正則進行其他匹配操作的時候匹配開始的位置。而匹配失敗時重置lastIndex為0。

var reg = /ab/g;
// 初始值為0,從最開始匹配 匹配成功, lastIndex為4
console.log(reg.test('12ab34ab'), reg.lastIndex); // true 4
// 從第4位字符"3"開始匹配 匹配內容為第二個ab lastIndex 為 8
console.log(reg.test('12ab34ab'), reg.lastIndex); // true 8
// 從第8位 (字符長度為8,沒有第8位) 開始匹配 匹配不成功 重置lastIndex 為 0
console.log(reg.test('12ab34ab'), reg.lastIndex); // false 0
// 從頭匹配 同第一步
console.log(reg.test('12ab34ab'), reg.lastIndex); // true 4

看到這里題目也就解答完畢,接下來是擴展。

對于未重新聲明的reg容易犯錯的地方。

// 測試字符串str1 和 str2 是否都含有ab字符
var reg = /ab/g;
var str1 = '123ab';
var str2 = 'ab123';
console.log(reg.test(str1)); // true
console.log(reg.test(str2)); // false

很明顯這里因為lastIndex的原因導致判斷錯誤。這里可以修改reg不帶參數g或則重新聲明reg,當然也可以在第一次匹配后手動修改reg.lastIndex = 0。

預查

接著說預查,字面意思就是預備匹配查詢,也就是查詢匹配內容接下來的內容,但是只是預備查詢匹配,并不返回。

經常我們需要匹配到字符串中某些字符后面跟某些字符,但是我們不需要匹配結果中包含后面跟的字符,例如:

找出下面字符串中字符后面是2的所有字符。

var str = 'a1b2c22d31e4fg6h2';
'a1b2c22d31e4fg6h2'.match(/[a-z]2/g); // ["b2", "c2", "h2"]

這樣,雖然能匹配出字符串帶2的,但是數字2我們并不需要,這里只需要字符。而用預查:

'a1b2c22d31e4fg6h2'.match(/[a-z](?=2)/g); // ["b", "c", "h"]

可以看到完全滿足條件,但是預查和本文的主題lastIndex又有幾毛錢的關系呢?

我們用test來看看,至于為什么用test這里要說明一下,match是匹配所有,直到匹配不成功的時候結束匹配,而匹配不成功時,lastIndex就被重置為0了。

而exec和test是第一次匹配成功或者匹配失敗就返回,并不會接著往下匹配。

var reg1 = /[a-z](?=2)/g;
var reg2 = /[a-z]2/g;
var str = 'a1b2c22d31e4fg6h2';
console.log(reg1.test(str), reg1.lastIndex); // true 3
console.log(reg1.test(str), reg1.lastIndex); // true 5
console.log(reg1.test(str), reg1.lastIndex); // true 16
console.log(reg1.test(str), reg1.lastIndex); // false 0
console.log(reg2.test(str), reg2.lastIndex); // true 4
console.log(reg2.test(str), reg2.lastIndex); // true 6
console.log(reg2.test(str), reg2.lastIndex); // true 17
console.log(reg2.test(str), reg2.lastIndex); // false 0

看出問題沒有?預查的lastIndex不包含預查內容! 這里就可以用來簡化很多判斷了。

例如我們要匹配密碼必須有至少一個大寫字母,一個小寫字母,一個數字,并且長度至少6位而且只能是數字字母組合。

按照不會預查的情況會這樣去判斷:

/[a-z]/.test(pwd)  /[A-Z]/.test(pwd)  /\d/.test(pwd)  /^[a-zA-Z0-9]{6,}$/.test(pwd);

但是:

/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z0-9]{6,}$/.test(pwd)

分解出來看:

(?=.*[a-z]) 是否有小寫字母 但是是預查 匹配失敗返回false 成功lastIndex不變動,還是為0,同理理解兩外預查內容,最后就是6喂以上的字母數字組合匹配,但是前面都是預查,lastIndex始終未0,每次匹配都是從最開始匹配的,所以滿足要求。

以上所述是小編給大家介紹的淺析正則表達式中的lastIndex以及預查,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

您可能感興趣的文章:
  • JS中正則表達式要注意lastIndex屬性
  • js正則表達式之RegExp對象屬性lastIndex,lastMatch,lastParen,lastContext,rightContext屬性講解
  • Javascript lastIndex 正則表達式的一個疑惑
  • 淺析lastIndex對正則表達式結果的影響

標簽:湖州 泰安 常州 海口 大興安嶺 本溪 哈密 涼山

巨人網絡通訊聲明:本文標題《淺析正則表達式中的lastIndex以及預查》,本文關鍵詞  淺析,正則,表達式,中的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《淺析正則表達式中的lastIndex以及預查》相關的同類信息!
  • 本頁收集關于淺析正則表達式中的lastIndex以及預查的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    美女脱光内衣内裤视频久久网站 | 日韩亚洲电影在线| 一本大道久久a久久综合婷婷 | 国产精品久久久久影院亚瑟| 337p粉嫩大胆噜噜噜噜噜91av| 欧美一区日韩一区| 538在线一区二区精品国产| 在线视频你懂得一区| 欧美亚州韩日在线看免费版国语版| 在线观看亚洲一区| 欧美日韩精品欧美日韩精品| 911精品国产一区二区在线| 欧美一区二区视频观看视频| 欧美v国产在线一区二区三区| 久久久美女毛片| 亚洲国产精品v| 亚洲精品成a人| 首页国产丝袜综合| 久久99久国产精品黄毛片色诱| 国产在线视视频有精品| 国产91精品免费| 在线视频你懂得一区| 欧美一区二视频| 国产精品黄色在线观看| 一区二区三区日韩欧美| 久久国产福利国产秒拍| 不卡电影一区二区三区| 欧美巨大另类极品videosbest | 欧美麻豆精品久久久久久| 4438成人网| 国产日韩精品一区二区三区在线| 亚洲免费资源在线播放| 欧美aⅴ一区二区三区视频| 国产成人精品免费在线| 欧美日韩国产精品成人| 中文字幕久久午夜不卡| 丝瓜av网站精品一区二区| 国产成人99久久亚洲综合精品| 在线观看91视频| 久久色中文字幕| 天使萌一区二区三区免费观看| 国产91富婆露脸刺激对白| 欧美乱熟臀69xxxxxx| 国产精品久久99| 国产精品资源在线观看| 欧美高清一级片在线| 一区二区中文字幕在线| 国产一区视频网站| 欧美久久久久中文字幕| 亚洲精品网站在线观看| 国产麻豆成人传媒免费观看| 69堂成人精品免费视频| 一区二区三区四区不卡视频 | 亚洲午夜电影在线| 国产福利91精品一区| 欧美成人精品3d动漫h| 婷婷久久综合九色综合绿巨人| 99久久婷婷国产综合精品| 久久精品网站免费观看| 久久国产免费看| 精品国精品国产尤物美女| 日韩中文字幕区一区有砖一区| 91极品视觉盛宴| 亚洲美女屁股眼交| 一本久道中文字幕精品亚洲嫩| 亚洲色图欧洲色图婷婷| jlzzjlzz亚洲日本少妇| 国产精品久久夜| 91蜜桃免费观看视频| 亚洲另类在线视频| 在线观看中文字幕不卡| 亚洲一区二区三区四区在线免费观看 | 热久久免费视频| 欧美一区二区三区人| 亚洲第一狼人社区| 在线观看视频欧美| 午夜激情一区二区三区| 日韩欧美一区二区在线视频| 青青草原综合久久大伊人精品优势| 欧美精三区欧美精三区| 日韩成人精品视频| 精品粉嫩超白一线天av| 国产精品 日产精品 欧美精品| 国产日韩欧美a| 99久久综合狠狠综合久久| 亚洲色图另类专区| 在线免费亚洲电影| 日av在线不卡| 国产人成一区二区三区影院| caoporm超碰国产精品| 亚洲一区在线视频观看| 精品视频资源站| 人人精品人人爱| 欧美激情一区二区三区蜜桃视频| 91丨九色丨蝌蚪富婆spa| 午夜av一区二区| 精品国产免费久久| 99精品视频一区| 日本欧美一区二区三区乱码| 久久尤物电影视频在线观看| 91一区二区三区在线观看| 日韩精品欧美精品| 久久精品免视看| 日本电影亚洲天堂一区| 精久久久久久久久久久| 中文字幕日韩一区| 欧美日韩电影在线播放| 福利一区二区在线| 香蕉久久一区二区不卡无毒影院| 2017欧美狠狠色| 欧美日韩中文一区| 成人夜色视频网站在线观看| 日韩高清在线不卡| 日韩理论片中文av| 欧美xxxxx牲另类人与| 色综合久久久久| 国产精品1024| 麻豆精品久久精品色综合| 专区另类欧美日韩| 久久伊99综合婷婷久久伊| 在线观看亚洲成人| 99免费精品视频| 国产在线精品一区在线观看麻豆| 亚洲一区二区视频在线| 中文字幕一区二区三区精华液 | 成人免费毛片app| 日本va欧美va欧美va精品| 亚洲免费三区一区二区| 国产欧美日韩在线视频| 日韩美女一区二区三区| 欧美午夜电影在线播放| 99vv1com这只有精品| 国产99精品在线观看| 奇米一区二区三区av| 亚洲福利一二三区| 亚洲制服丝袜av| 亚洲免费观看高清| 国产精品电影院| 国产精品国产三级国产aⅴ入口| 久久色成人在线| 久久一区二区三区国产精品| 日韩欧美aaaaaa| 精品噜噜噜噜久久久久久久久试看 | 欧美最猛黑人xxxxx猛交| av不卡免费在线观看| 波多野结衣欧美| 成人激情小说网站| 成人动漫在线一区| 成人av高清在线| 99国产精品久久| 日本精品一区二区三区高清| 色狠狠色狠狠综合| 欧洲视频一区二区| 精品视频在线免费观看| 欧美日韩dvd在线观看| 4438成人网| 久久一区二区三区四区| 日本一区二区三区四区在线视频 | 国产精品女同互慰在线看| 国产无一区二区| 中文字幕一区二区在线播放| 亚洲欧美一区二区不卡| 亚洲成a人片在线观看中文| 日韩国产一二三区| 国产麻豆视频一区| 91免费精品国自产拍在线不卡| 在线观看日韩高清av| 欧美成人一区二区三区| 欧美激情中文不卡| 一级日本不卡的影视| 久久成人精品无人区| voyeur盗摄精品| 9191久久久久久久久久久| 久久久99久久精品欧美| 亚洲精品视频在线看| 蜜臀av一区二区三区| 不卡视频在线看| 欧美日韩高清一区二区| 国产欧美日韩不卡免费| 一区二区三区.www| 国产主播一区二区三区| 色婷婷综合久久久中文一区二区 | 成人免费毛片嘿嘿连载视频| 在线看日韩精品电影| 亚洲精品一区二区三区福利| 亚洲精品中文在线| 国产精品一二三四| 欧美私人免费视频| 亚洲国产精品成人久久综合一区| 午夜精品福利在线| 9色porny自拍视频一区二区| 日韩午夜在线观看| 夜夜亚洲天天久久| 成人一区二区三区在线观看| 欧美一卡2卡三卡4卡5免费| 亚洲精品乱码久久久久久日本蜜臀| 国产在线播放一区| 777午夜精品免费视频| 一区二区三区四区不卡在线 | 99精品国产热久久91蜜凸|