javascript正規表現におけるパラメータg(大域)の役割

1254 ワード

詳細に説明します.
1)表現オブジェクトのexecメソッドに対して、gを加えないと最初のマッチのみを返します.何回実行してもそうです.gを入れると、最初の実行も最初のマッチに戻り、第二のマッチを実行して、順に類推します.たとえば:
 
  
var regx=/user\d/;
var str=”user18duser2dsc”;
var rs=regx.exec(str);// rs {user1}
var rs2=regx.exec(str);// rs {user1}
もしregx=/user\d/g:だったら、rsの値は{user 1}で、rs 2の値は{user 2}です.
この例では、exec方法に対して、表現はgを加えて、exec方法を実行すればすべてのマッチングに戻るというわけではなく、gを入れたら、何らかの方法ですべてのマッチングが得られます.ここでの「方式」はexecにとって、この方法を実行すればいいです.
2)表式オブジェクトのtestメソッドについては、gを入れるか、gを入れないかの違いはありません.
3)Stringオブジェクトのmatch方法については、gを加えず、最初のマッチに戻るだけで、常に最初のマッチに戻り、gを加えると、すべてのマッチに一度に戻ります.たとえば:
 
  
var regx=/user\d/;
var str=”user1dge3user2gwe”;
var rs=str.match(regx);// rs {user1}
var rs2=str.match(regx);// rs2 {user1}
regx=/user\d/gであれば、rsの値は{user 1,user 2}であり、RS 2の値も{user 1,user 2}である.
4)stringオブジェクトのreplace方法に対して、表現はgを加えない場合、最初のマッチのみを置換し、gを入れたら、すべてのマッチを置換します.
5)Stringオブジェクトのsplit方法については、gを加えてもgを加えないのと同じです.
 
  
var sep=/user\d/;
var array=”user1dfsfuser2dfsf”.split(sep);
arrayの値は{dfsf,dfsf}であり、sep=/user\d/gの場合、戻り値も同じである.
6)stringオブジェクトのsearch方法については、gを加えないのも同じです.