JS中使用正則表達式g模式和非g模式的區(qū)別
先給大家說下js正則表達式中的g到底是什么意思
g是global的縮寫?。?/p>
就是匹配全部可匹配結(jié)果,
如果你不帶g,在正則過程中,字符串是從左至右匹配的,如果匹配成功就不再繼續(xù)向右匹配了,如果你帶g,它會重頭到尾的把正確匹配的字符串挑選出來
例如:
var str = 'aaaaaaaa' var reg1 = /a/ var reg2 = /a/g str.match(reg1) // 結(jié)果為:["a", index: 0, input: "aaaaaaaa"] str.match(reg2) // 結(jié)果為:["a", "a", "a", "a", "a", "a", "a", "a"]
js正則表達式g模式與非g模式的區(qū)別,具體代碼如下所示:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>mischen</title>
<script>
//js中使用正則表達式
function test(){
//生成正則表達式對象;
// 在g模式下,正則表達式對象的exec和test方法,依賴 正則表達式對象的lastIndex屬性,而lastIndex會根據(jù)我們exec
// 和test的執(zhí)行 發(fā)生偏移 如果沒有相應(yīng)匹配 lastIndex 重歸0
//在非g模式下,正則表達式對象的exec和test方法, lastIndex 不會發(fā)生偏移
//exec方法 如果正則表達式中 有分組 第一個返回的是 匹配到的字符串 后面是根據(jù)分組分別返回的匹配的 字符串
var reg=new RegExp("\\d+[a-z]+","ig"); //字符串里 \ 表示轉(zhuǎn)譯
var str="123abc123def";
alert(reg.lastIndex);//0
alert(reg.exec(str));//123abc
alert(reg.lastIndex);//6
alert(reg.test(str));//true
alert(reg.lastIndex);//12
}
// test();
test1();
function test1(){
//非g模式下使用 exec 和test
var reg=new RegExp("\\d+[a-z]+","i");
var str="123abc123def";
// alert(reg.lastIndex);//0
// alert(reg.exec(str));//123abc
// alert(reg.lastIndex);//0
// alert(reg.test(str));//true
// alert(reg.lastIndex);//0
// alert(reg.exec(str));//123abc
// alert(reg.lastIndex);//0
// alert(reg.test(str));//true
// alert(reg.lastIndex);//0
var reg=new RegExp("(\\d+)([a-z]+)","i");
alert(reg.exec(str));//123abc,123,abc
alert(reg.exec(str));//123abc,123,abc
}
</script>
</head>
<body>
</body>
</html>
以上所述是小編給大家介紹的JS中使用正則表達式g模式和非g模式的區(qū)別,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
javascript 數(shù)據(jù)結(jié)構(gòu)的題
面試題是3個數(shù)據(jù)結(jié)構(gòu)的題,可以用java/c/c++/python實現(xiàn),靠,js也能實現(xiàn),鄙視js?我上機就用js寫的,雖說肯定沒戲,但js我挺。2008-07-07
JavaScript實現(xiàn)瀏覽器內(nèi)多個標簽頁通信方式詳解
在瀏覽器中,多個標簽頁(頁簽)之間的通信有一些方法可以實現(xiàn),這篇文章為大家整理了6個常用的方法,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-03-03
Canvas中繪制Geojson數(shù)據(jù)示例詳解
這篇文章主要為大家介紹了Canvas中繪制Geojson數(shù)據(jù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-11-11
javascript中export?和export?default的區(qū)別
本文主要介紹了javascript中export?和export?default的區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07

