1Q对于表辑ּ对象的execҎQ不加入gQ则只返回第一个匹配,无论执行多少ơ均是如此,如果加入gQ则W一ơ执行也q回W一个匹配,再执行返回第二个匚wQ依ơ类推。例? var regx=/user\d/; var str=“user18dsdfuser2dsfsd”; var rs=regx.exec(str);//此时rs的gؓ{user1} var rs2=regx.exec(str);//此时rs的g然ؓ{user1} 如果regx=/user\d/gQ则rs的gؓ{user1}Qrs2的gؓ{user2} 通过q个例子说明Q对于execҎQ表辑ּ加入了gQƈ不是说执行execҎ可以返回所有的匚wQ而是说加入了g之后Q我可以通过某种方式得到所有的匚wQ这里的“方式”对于exec而言Q就是依ơ执行这个方法即可?
2Q对于表辑ּ对象的testҎQ加入g于不加上g没有什么区别?
3Q对于String对象的matchҎQ不加入gQ也只是q回W一个匹配,一直执行matchҎ也Lq回W一个匹配,加入gQ则一ơ返回所有的匚wQ注意这与表辑ּ对象的execҎ不同Q对于exec而言Q表辑ּ即加上了gQ也不会一ơ返回所有的匚wQ。例如: var regx=/user\d/; var str=“user1sdfsffuser2dfsdf”; var rs=str.match(regx);//此时rs的gؓ{user1} var rs2=str.match(regx);//此时rs的g然ؓ{user1} 如果regx=/user\d/gQ则rs的gؓ{user1,user2}Qrs2的g为{user1,user2}
1Q用^的例? var regx=/^b./g; var str=“bd76 dfsdf sdfsdfs dffs b76dsf sdfsdf”; var rs=str.match(regx); 此时加入g和不加入gQ都只返回第一个匹配{bd}Q如果regx=/^b./gmQ则q回所有的匚w{bd,b7}Q注意如果regx=/^b./mQ则也只q回W一个匹配。所以,加入m表明可以q行多行匚wQ加入g表明可以q行全局匚wQ综合到一起就是可以进行多行全局匚w
2Q用其他模式的例子Q例? var regx=/user\d/; var str=“sdfsfsdfsdf sdfsuser3 dffs b76dsf user6”; var rs=str.match(regx); 此时不加参数gQ则q回{user3}Q加入参数gq回{user3,user6}Q加不加入mҎ没有影响?
3Q因此对于m我们要清楚它的用,C它只对^?模式起作用,在这两种模式中,m的作用ؓQ如果不加入mQ则只能在第一行进行匹配,如果加入m则可以在所有的行进行匹配。我们再看一个^的例? var regx=/^b./; var str=“ret76 dfsdf bjfsdfs dffs b76dsf sdfsdf”; var rs=str.match(regx); 此时rs的gؓnullQ如果加入gQrs的g然ؓnullQ如果加入mQ则rs的gؓ{bj}Q也是_在第一行没有找到匹配,因ؓ有参数mQ所以可以l去下面的行L是否有匹配)Q如果m和g都加上,则返回{bj,b7}Q只加m不加g说明Q可以去多行q行匚wQ但是找C个匹配后p回,加入g表明多行中所有的匚wq回Q当然对于matchҎ是如此,对于exec呢,则需要执行多ơ才能依ơ返回)
ȝ3Q在HTML的textarea输入域中Q按一个Enter键,对应的控制字Wؓ“\r\n”Q即“回R换行”Q而不?#8220;\n\r”Q即“换行回R”Q我们看一个前面我们Dq的例子Q? var regx=/a\r\nbc/; var str=“a bc”; var rs=regx.exec(str); l果Q匹配成功,rs的gؓQ{ }Q如果表辑ּ?a\n\rbc/Q则不会被匹配,因此在一般的~辑器中一?#8221;Enter”键代表着“回R换行”Q而非“换行回R”Q至在textarea域中是这L?/p>