先給大家說下js正則表達式中的g到底是什麼意思
g是global的縮寫啊!
就是匹配全部可匹配結果,
如果你不帶g,在正則過程中,字符串是從左至右匹配的,如果匹配成功就不再繼續向右匹配了,如果你帶g,它會重頭到尾的把正確匹配的字符串挑選出來
例如:
var str = 'aaaaaaaa' var reg1 = /a/ var reg2 = /a/g str.match(reg1) // 結果為:["a", index: 0, input: "aaaaaaaa"] str.match(reg2) // 結果為:["a", "a", "a", "a", "a", "a", "a", "a"]
js正則表達式g模式與非g模式的區別,具體代碼如下所示:
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>mischen</title> <script> //js中使用正則表達式 function test(){ //生成正則表達式對象; // 在g模式下,正則表達式對象的exec和test方法,依賴 正則表達式對象的lastIndex屬性,而lastIndex會根據我們exec // 和test的執行 發生偏移 如果沒有相應匹配 lastIndex 重歸0 //在非g模式下,正則表達式對象的exec和test方法, lastIndex 不會發生偏移 //exec方法 如果正則表達式中 有分組 第一個返回的是 匹配到的字符串 後面是根據分組分別返回的匹配的 字符串 var reg=new RegExp("\\d+[a-z]+","ig"); //字符串裡 \ 表示轉譯 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模式的區別,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對網站的支持!