正規表現RegExpクラス
RegExpクラス
unknown
正規表現オブジェクト = new RegExp ( パターン[, フラグ] )
正規表現オブジェクト = /パターン/フラグ
正規表現オブジェクト = /パターン/フラグ
RegExpクラスは、文字パターンによって定義された架空の文字列を扱う正規表現オブジェクトです。 高度な文字検索や置換をするのに使用します。
newステートメントで正規表現オブジェクトを生成し、第1引数にパターンを指定します。 オプションの第2引数フラグには以下の2つがあります。 省略した場合は、パターンに一致する文字列が一番最初に見つかった時点で検索を終了します。
| フラグ | 説明 |
|---|---|
| g | 全文検索。結果は配列に格納。 |
| i | 大文字小文字の区別なし。 |
var obj = new RegExp(str); var obj = new RegExp(str, 'g'); var obj = new RegExp(str, 'i'); var obj = new RegExp(str, 'gi');
以下のように簡略化することもできます。いずれの場合も結果は同じです。
var obj = /str/; var obj = /str/g; var obj = /str/i; var obj = /str/gi;
パターン設定後は、execメソッドで検索を実行します。
パターンに一致した部分が発見されると、一致した文字列が$1~$9までの配列に格納されます。 各文字列は、RegExp.$1~RegExp.$9として取得できます。 値の大きいプロパティほど、後方で発見されたものになります。
<script type="text/javascript">
var now="2006/12/26 23:59:40".match(/(\d+)\/(\d+)\/(\d+) (\d+):(\d+):(\d+)/);
document.write(RegExp.$1+"<br \/>"); //2006
document.write(RegExp.$2+"<br \/>"); //12
document.write(RegExp.$3+"<br \/>"); //26
document.write(RegExp.$4+"<br \/>"); //23
document.write(RegExp.$5+"<br \/>"); //59
document.write(RegExp.$6+"<br \/>"); //40
</script>
execメソッドでなくても、文字列オブジェクト(matchメソッド、searchメソッド、replaceメソッド)の引数として正規表現オブジェクトを渡して、文字列の検索や置換を行うこともできます。
<script type="text/javascript">
/* フラグ省略(最初に見つかったものだけ) */
function nRegExp(str){
var regObj=new RegExp(/o{2}/);
var res=str.match(regObj);
return res;
}
document.write(nRegExp('gooooooooogle')+"<br>\n"); /* oo */
/* フラグ'g'を指定(全文検索) */
function gRegExp(str){
var regObj=new RegExp(/o{2}/g);
var res=str.match(regObj);
return res;
}
document.write(gRegExp('gooooooooogle')+"<br>\n"); /* oo,oo,oo,oo */
/* フラグ'i'を指定(大文字小文字区別なし) */
function iRegExp(str){
var regObj=new RegExp(/Yahoo/i);
var res=str.match(regObj);
return res;
}
document.write(iRegExp('yahooYahoo')+"<br>\n"); /* yahoo */
/* フラグ'gi'を指定(全文検索+大文字小文字区別なし) */
function giRegExp(str){
var regObj=new RegExp(/Yahoo/gi);
var res=str.match(regObj);
return res;
}
document.write(giRegExp('yahooYahoo')+"<br>\n"); /* yahoo,Yahoo */
</script>