jsの正規表現(下)

11519 ワード

1、グループのexecは配列に戻ります.
1)非パケットマッチングのexecリターン配列:
1 var pattern =/\d+[a-z]+/;

2 var str='234google';

3 alert(pattern.exec(str));         //234google

4 alert(typeof pattern.exec(str));  //object
 
2)グループマッチング下のexecリターン配列
1 pattern =/(\d+)([a-z]*)/;

2 var a =pattern.exec(str);

3 alert(a);   //234google,234,google

4 alert(a.length);  //3

5 alert(a[0]);  //234google  :            

6 alert(a[1]);  //234    :                 

7 alert(a[2]);  //google  :                 
 
3)グループを捕獲するか、グループを捕捉しないか
上記の2つ目のパケットマッチングにおけるexec()は、キャプチャパケットである.
グループをキャプチャしないということは、キャプチャしたくないパケットマッチング文字列の前に「?:」を追加し、このモード文字列はマッチするときにはキャプチャされません.
 1 //       

 2 var pattern =/(\d+)\s([a-z]+)/;

 3 var str='123 abc';

 4 var a=pattern.exec(str);

 5 alert(a);    //123 abc,123,abc

 6 

 7 

 8 //     

 9 var pattern2=/(\d+)\s(?:[a-z]+)/;    //        "?:"                   

10 var str='123 abc';

11 var a=pattern2.exec(str);

12 alert(a);    //123 abc,123    :  :abc           

13 alert(a.length);  //2
 
4)グループネストの捕獲
ネストされたパケットに対応するモード文字列は、キャプチャ時に「外向内」からキャプチャされる.
1 var pattern =/(a?(b?(c?)))/;

2 var str='abc';  

3 var a =pattern.exec(str);  //              “    ”      

4 alert(a[0]);   //abc     :          

5 alert(a[1]);   //abc     :               (    )

6 alert(a[2]);   //bc      :             

7 alert(a[3]);   //c       :               
 
 
2、前景で捕獲する
文字列にマッチするときは、自分の要求に合った文字列だけがマッチします.捕獲も同じです.
まず例を見ます
1 var pattern =/goo/;

2 var str='goobb';

3 alert(pattern.exec(str));  //   goo
 
gooの後ろにあるのがグーグルの場合だけです.成功と捕獲にマッチするなら、前景で捕獲して制限します.
1 pattern=/goo(?=gle)/;   //    :   goo        gle      

2 var str='goobb';

3 alert(pattern.exec(str));  //null

4 alert(pattern.test('google'));//true

5 alert(pattern.exec('google'));   //goo
 
 
3、正規表現における特殊文字のマッチング
文字列にマッチする場合 正規表現に特殊な文字列が含まれている場合は、\を使って変換してから使用します.そうでないとエラーが発生します.
1 var pattern =/\./;

2 var str='.';

3 alert(pattern.test(str));//true
 
 
4、常用正規表現の練習
正規表現を書く場合は、まずテストの例をまとめて、必要なものをまとめて正規表現を書きます.
1)郵便番号の検証
まず例を書きます.
var str='This 124000!' //要求は6桁の文字で、要求は全部数字です. ,最初の文字は0より大きいです.
1 var pattern =/[1-9][0-9]{5}/;  //                    ,                 '^$'

2 var str='This is 124000!';  //       :6   ,         ,        0

3 alert(pattern.test(str));  //true
 
2) 圧縮パッケージのマッチング
 例:
var str='12_3.rar;   //要求:文書名:字母、数字、_、そして、最後はzipかrarです.
1 var pattern =/^(\w+)\.(zip|rar|7z|gz)$/;  //           

2 var str='12_3.rar';    //  :   :  、  、_,,    . ,,    zip   rar

3 

4 alert(pattern.test(str));
 
3) 余分なスペースを削除します.
文字列のすべてのスペースを削除します.これは簡単です.
var pattern =/\s/g;

var str='aa bbb  cccc dd';

alert(str.replace(pattern,''));
 
先頭のスペースを削除します. 
1)一番簡単で、一番近い書き方
1 var pattern =/^\s+/;

2 var str='       goo       gle            ';

3 var result =str.replace(pattern,'');

4 pattern =/\s+$/;

5 result =result.replace(pattern,'');

6 alert('|' +result + '|');
 
2)不活性モードを使った捕獲
1 var pattern =/^\s+(.*?)\s+$/;   //   ?       ,(      :                        ),,           ,,                          

2 var str='       goo       gle            ';

3 //   exec()    

4 var result =pattern.exec(str)[1];

5 alert('|' + result + '|');
 
3)グループで取得する
1 var pattern =/^\s+(.*?)\s+$/; 

2 var str='       goo       gle            ';

3 var result =str.replace(pattern,'$1');  //                      

4 alert('|' + result + '|');
 
4)簡易メールボックスの検証
例:
var str='g [email protected]'; //フォーマット:'ユーザー名(文字、数字、 
1 var pattern =/^([\w\.\-]+)@([\w\-]+)\.([a-zA-Z]{2,4})$/;

2 var str='[email protected]';   //  :'   (  、  、 . 、-、_)@  (  、  、-).com/cn (  (2-4 ))'

3 alert(pattern.test(str));