/pattern/[switch].test(string)
以下、例です。
alert(/ab/.test("bab")); //true
alert(/ab/.test("bca")); //false
alert(/[2-4]/.test("573")); //true
alert(/ab/i.test("BAB")); //true
上のコードの最初の行は、文字列"bab"がabというパターンにマッチするかどうかを
調べています。マッチするとtureを返します。
次の行はマッチしないのでfalseを返します。
3行目は、2から4の数字(すなわち、"2"、"3"、"4"のうちのいずれか)
にマッチするか調べています。
最後の行はスイッチ i をつけています。
これをつけると、大文字・小文字を区別せずに検索します。
コーディング時にパターンがわかっている場合には上のようにしますが、 スクリプトの実行時にパターンを決定する場合には 検索の前にRegular Expressionオブジェクトを作ります。
function test2(form) {
var str = "abcbda"; //検索される文字列
//Regular Expressionオブジェクト
var rexp = new RegExp(form.text1.value);
alert(rexp.test(str)); //マッチするかどうか
}
上のテキストボックスにパターンを入力してください。
文字列 "abcbda" にマッチするかどうかが表示されます。Regular Expressionオブジェクトは次のように作成します。
var regularexpression = new RegExp(pattern,[switch])
こうして得られたRegular Expressionオブジェクトに対し、
testメソッドを働かせてマッチングを行います。
var objRegExp, stream, iline; objRegExp = new RegExp(); objRegExp.compile(pattern); //内部形式に変換 stream = objfile.OpenAsTextStream(); //入力ストリーム //ファイルの終端まで読む for(iline = 1; !stream.AtEndOfStream; iline++) { str = stream.ReadLine(); //1行読む if(objRegExp.test(str)) //マッチすれば出力する WScript.Echo(fileobj.Path+"("+iline+"): "+str); } stream.Close(); //ファイルを閉じるあるファイルを読みこんであるパターンにマッチする行を出力します。 上の例は Windows Scripting Host です。
以上のようにtestメソッドを用いますが、 indexOf メソッドのようにマッチした場所を知るには、 searchメソッドを使ってください。
var a = /(ab).+(ab)/.exec("abcabc");
for(var i = 0; i < a.length; i++)
alert(a[i]);
execメソッドはマッチした文字列の配列を返します。 具体的には、最初の配列の要素がマッチした全体、 次の要素からが()の中にマッチした部分が左から順になるようです。
execメソッドを実行すると、 詳しい結果がRegExpオブジェクトに反映されます。
if(/(\d+):(\d+):(\d+)/.exec("18:02:00"))
alert(RegExp.$1 + "時" + RegExp.$2
+ "分" + RegExp.$3 + "秒");
\dは数字0〜9のいずれかとマッチする、
すなわち[0-9]と同じです。
\d+で一つ以上の数字の並びということになります。
()がついているのは、そこにマッチするとメモリに格納されるということです。
具体的には左から順に、RegExpオブジェクトの
$1プロパティ、
$2プロパティ、
$3プロパティに格納されます。