先給大家說下js正則表達式中的g到底是什么意思
g是global的縮寫啊!
就是匹配全部可匹配結(jié)果,
如果你不帶g,在正則過程中,字符串是從左至右匹配的,如果匹配成功就不再繼續(xù)向右匹配了,如果你帶g,它會重頭到尾的把正確匹配的字符串挑選出來
例如:
var str = 'aaaaaaaa'var reg1 = /a/var reg2 = /a/gstr.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("http://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("http://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)網(wǎng)站的支持!
新聞熱點
疑難解答