jsの正規表現(下)
11519 ワード
1、グループのexecは配列に戻ります.
1)非パケットマッチングのexecリターン配列:
2)グループマッチング下のexecリターン配列
3)グループを捕獲するか、グループを捕捉しないか
上記の2つ目のパケットマッチングにおけるexec()は、キャプチャパケットである.
グループをキャプチャしないということは、キャプチャしたくないパケットマッチング文字列の前に「?:」を追加し、このモード文字列はマッチするときにはキャプチャされません.
4)グループネストの捕獲
ネストされたパケットに対応するモード文字列は、キャプチャ時に「外向内」からキャプチャされる.
2、前景で捕獲する
文字列にマッチするときは、自分の要求に合った文字列だけがマッチします.捕獲も同じです.
まず例を見ます
gooの後ろにあるのがグーグルの場合だけです.成功と捕獲にマッチするなら、前景で捕獲して制限します.
3、正規表現における特殊文字のマッチング
文字列にマッチする場合 正規表現に特殊な文字列が含まれている場合は、\を使って変換してから使用します.そうでないとエラーが発生します.
4、常用正規表現の練習
正規表現を書く場合は、まずテストの例をまとめて、必要なものをまとめて正規表現を書きます.
1)郵便番号の検証
まず例を書きます.
var str='This 124000!' //要求は6桁の文字で、要求は全部数字です. ,最初の文字は0より大きいです.
2) 圧縮パッケージのマッチング
例:
var str='12_3.rar; //要求:文書名:字母、数字、_、そして、最後はzipかrarです.
3) 余分なスペースを削除します.
文字列のすべてのスペースを削除します.これは簡単です.
先頭のスペースを削除します.
1)一番簡単で、一番近い書き方
2)不活性モードを使った捕獲
3)グループで取得する
4)簡易メールボックスの検証
例:
var str='g [email protected]'; //フォーマット:'ユーザー名(文字、数字、
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));