淺談regExp的test方法取得的值變化的原因及處理方法
1、JavaScript 正則表達(dá)式對(duì)象RegExp的test方法,用于檢測(cè)一個(gè)字符串是否匹配某個(gè)模式。
字面量定義RegExp對(duì)象:var re = /pattern/attributes,其中attributes可以是g,i,m;
閱讀以下程序:
<script type="text/javascript"> var str = 'abc123'; var re = /^abc/g ; var result1 = re.test(str); var result2 = re.test(str); var result3 = re.test(str); document.write('result1:' + result1 + '<br/>'); document.write('result2:' + result2 + '<br/>'); document.write('result3:' + result3); </script>
我們會(huì)認(rèn)為打印結(jié)果應(yīng)該是true;true;true;
而實(shí)際情況卻是true;false;true;
2、為什么第二個(gè)結(jié)果是false?
發(fā)現(xiàn)RegExp對(duì)象有一個(gè)lastIndex的屬性,如果使用了全局修飾符,那么執(zhí)行test方法后,lastIndex就會(huì)記錄匹配的字符串在原始字 符串中最后一位的索引加一,例如執(zhí)行了var result1 = re.test(str)后lastIndex為3(document.write('re.lastindex:' + re.lastIndex+ '<br/>');),如果沒(méi)有發(fā)現(xiàn)匹配lastIndex置為0。當(dāng)下次再執(zhí)行時(shí),對(duì)給定的字符串匹配不是從開(kāi)頭位置,而是要依據(jù)lastIndex提供的位置,由于這個(gè)原因,所以導(dǎo)致上例中result2的值為false。
3、處理方法:去除g;
即:var re = /^abc/g ;變?yōu)?var re = /^abc/;
以上這篇淺談regExp的test方法取得的值變化的原因及處理方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Javascript 定時(shí)器調(diào)用傳遞參數(shù)的方法
Javascript 定時(shí)器調(diào)用傳遞參數(shù)的方法,需要的朋友可以參考下。2009-11-11BootStrap點(diǎn)擊保存后實(shí)現(xiàn)模態(tài)框自動(dòng)關(guān)閉的思路(模態(tài)框)
這篇文章主要介紹了BootStrap點(diǎn)擊保存后實(shí)現(xiàn)模態(tài)框自動(dòng)關(guān)閉的思路(模態(tài)框),需要的朋友可以參考下2017-09-09JS/HTML5游戲常用算法之碰撞檢測(cè) 包圍盒檢測(cè)算法詳解【凹多邊形的分離軸檢測(cè)算法】
這篇文章主要介紹了JS/HTML5游戲常用算法之碰撞檢測(cè) 包圍盒檢測(cè)算法,結(jié)合實(shí)例形式詳細(xì)分析了javascript針對(duì)凹多邊形的分離軸檢測(cè)算法相關(guān)概念、原理、實(shí)現(xiàn)技巧與操作注意事項(xiàng),需要的朋友可以參考下2018-12-12JS定時(shí)器用法分析【時(shí)鐘與菜單中的應(yīng)用】
這篇文章主要介紹了JS定時(shí)器用法,結(jié)合時(shí)鐘與菜單中的應(yīng)用分析了JS中setInterval與setTimeout操作時(shí)間的相關(guān)技巧,需要的朋友可以參考下2016-12-12js模擬如何實(shí)現(xiàn)重載以及默認(rèn)參數(shù)
這篇文章主要介紹了js模擬如何實(shí)現(xiàn)重載以及默認(rèn)參數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05

詳解js創(chuàng)建對(duì)象的幾種方式和對(duì)象方法