欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Javascript中正則表達(dá)式的全局匹配模式分析

 更新時(shí)間:2011年04月26日 23:31:18   作者:  
先看一道JavaScript題目,據(jù)說(shuō)是國(guó)內(nèi)某知名互聯(lián)網(wǎng)企業(yè)的JavaScript筆試題,如果對(duì)正則的全局匹配模式不了解的話(huà)可能會(huì)對(duì)下面的輸出結(jié)果感到疑惑。
復(fù)制代碼 代碼如下:

var str = "123#abc";
var re = /abc/ig;
console.log(re.test(str)); //輸出ture
console.log(re.test(str)); //輸出false
console.log(re.test(str)); //輸出ture
console.log(re.test(str)); //輸出false

在創(chuàng)建正則表達(dá)式對(duì)象時(shí)如果使用了“g”標(biāo)識(shí)符或者設(shè)置它了的global屬性值為ture時(shí),那么新創(chuàng)建的正則表達(dá)式對(duì)象將使用模式對(duì)要將要匹配的字符串進(jìn)行全局匹配。在全局匹配模式下可以對(duì)指定要查找的字符串執(zhí)行多次匹配。每次匹配使用當(dāng)前正則對(duì)象的lastIndex屬性的值作為在目標(biāo)字符串中開(kāi)始查找的起始位置。lastIndex屬性的初始值為0,找到匹配的項(xiàng)后lastIndex的值被重置為匹配內(nèi)容的下一個(gè)字符在字符串中的位置索引,用來(lái)標(biāo)識(shí)下次執(zhí)行匹配時(shí)開(kāi)始查找的位置。如果找不到匹配的項(xiàng)lastIndex的值會(huì)被設(shè)置為0。當(dāng)沒(méi)有設(shè)置正則對(duì)象的全局匹配標(biāo)志時(shí)lastIndex屬性的值始終為0,每次執(zhí)行匹配僅查找字符串中第一個(gè)匹配的項(xiàng)??梢酝ㄏ旅娴拇a來(lái)查看在執(zhí)行匹配相應(yīng)的lastIndex 屬性的值。
復(fù)制代碼 代碼如下:

var str = "123#abc";
var re = /abc/ig;
console.log(re.test(str)); //輸出ture
console.log(re.lastIndex); //輸出7
console.log(re.test(str)); //輸出false
console.log(re.lastIndex); //輸出0
console.log(re.test(str)); //輸出ture
console.log(re.lastIndex); //輸出7
console.log(re.test(str)); //輸出false
console.log(re.lastIndex); //輸出0

關(guān)于RegExp.prototype.exec(str)方法和String.prototype.math(rgExp)方法

正則對(duì)象的test方法返回值為true或flase,在僅需要檢測(cè)目標(biāo)字符串與指定模式是否匹配,但不需要獲取匹配內(nèi)容時(shí)這個(gè)方法非常有用。當(dāng)需要獲取匹配結(jié)果時(shí)就需要用RegExp類(lèi)型的exec(str)方法或String類(lèi)型的match(rgExp)方法。

RegExp.prototype.exec(str)方法返回NULL或返會(huì)一個(gè)數(shù)組,在數(shù)組的第0個(gè)元素存放的是在字符串str中查找到的匹配內(nèi)容,1到n個(gè)元素返回的是在模式中使用括號(hào)"()"指定的子匹配項(xiàng)的內(nèi)容。

在沒(méi)有使用全局標(biāo)志時(shí)String.prototype.math(rgExp)方法和RegExp.prototype.exec(str)的行為類(lèi)似。當(dāng)設(shè)置了全局匹配標(biāo)志時(shí)String.prototype.math(rgExp)方法返回的數(shù)組項(xiàng)元素0到n中包含了所有匹配到的項(xiàng)不包含子匹配項(xiàng)。這時(shí)可以使用RegExp.$1..$9獲取9個(gè)子匹配。

相關(guān)文章

最新評(píng)論