【JavaScript】正規表現を使っみよう
正規表現オブジェクト
RegExp 正規表現オブジェクト
例
"MZ"にマッチさせるための正規表現文字列を変数mStrに代入します。
"MZ"にマッチさせるための正規表現文字列を変数mStrに代入します。
プログラムサンプル
<html>
<head>
<title>サンプル</title>
</head>
<body>
<h2>RegExp</h2>
<script language="JavaScript">
<!--
mStr = new RegExp("Jav+" , "gi");
str = "Java JavaScript";
rs = str.match(mStr);
document.write("文字列<b>" + str + "</b>と<b>Jav+</b>の一致結果:" + rs );
//-->
</script>
</body>
</html>
サンプルダウンロード
パターンマッチした文字を取得する
RegExp.$1~$9 パターンマッチした文字
パターンマッチした文字が格納されています。
例
最初にパターンマッチ文字列を変数mCharに代入します。
プログラムサンプル
<html>
<head>
<title>サンプル</title>
</head>
<body>
<h2>パターンマッチした文字</h2>
<script language="JavaScript">
<!--
myRE = new RegExp("(\\w+)\\s(\\w+)","g");
str = "JavaScript JScript";
rs = str.replace(myRE, "$2 and $1");
document.write("$1の内容" + RegExp.$1.bold() + "<br />");
document.write("$2の内容" + RegExp.$2.bold() + "<br />");
//-->
</script>
</body>
</html>
正規表現文字の参照/設定
complile 正規表現文字の設定
source 正規表現文字の参照
例
REstrの正規表現文字列を"if800"に変更します。
alert("Restr.source)
Restrの正規表現文字列をアラートダイアログに表示する
プログラムサンプル
<html>
<head>
<title>サンプル</title>
</head>
<body>
<h2>正規表現文字の参照/設定</h2>
<script language="JavaScript">
<!--
myRE = new RegExp("Jav+","gi");
document.write("正規表現文字列<b>" + myRE.source + "</b><br>");
myRE = new RegExp("Script*");
document.write("正規表現文字列<b>" + myRE.source + "</b><br>");
//-->
</script>
</body>
</html>
パターンマッチ実行/開始位置
exec 検索実行
lastIndex 検索開始位置指定
test 正規表現文字の設定
execは文字列を省略した場合、RegExp.inputで設定された文字列を使用します。
testはマッチする文字列があるかどうか調べます。
例
rs = REstr.exec("if800")
文字列"if800"とREstrとのパターンマッチを行い結果をrsに格納する
REstr.lastIndex = 3
パターンマッチ開始位置を4番目の文字位置から行う
rs = REstr.test("superMZ")
文字列"superMZ"とREstrとのパターンマッチを行い結果をrsに格納する
サンプル
<html>
<head>
<title>サンプル</title>
</head>
<body>
<h2>パターンマッチ実行/開始位置</h2>
<script language="JavaScript">
<!--
myRE = /MZ..../g;
myRE.lastIndex = 12;
flag = myRE.test("MZ-700MZ1500MZ2500MZ3500MZ");
rs = myRE.exec("MZ-700MZ1500MZ2500MZ3500MZ");
document.write("testの結果<b>" + flag + "</b><br />");
document.write("execの結果<b>" + rs + "</b><br />");
//-->
</script>
</body>
</html>
検索条件
global 完全一致指定
ignoreCase 大文字小文字指定
multiline 改行コード指定
gobalは完全一致検索する場合trueを返し、そうでなければfalseを返します。
ignoreCaseは大文字小文字を判別しない場合trueを返し、そうでなければfalseを返します。
multilineは改行コードを無視するかどうかを指定します
例
alert(REstr.global)
正規表現オブジェクトREstrが完全一致検索指定されているか表示する
alert(REstr.ignoreCase)
正規表現オブジェクトREstrが完全一致検索指定されているか表示する
RegExp.mutiline = false
改行コードを無視して検索するように指定する
サンプル<html>
<head>
<title>サンプル</title>
</head>
<body>
<h2>パターンマッチ実行/開始位置</h2>
<script language="JavaScript">
<!--
myRE = /MZ-7/g;
result = myRE.global;
document.write("グローバルマッチプラグ:" + result + "<br />");
myRE = /MZ-7/;
result = myRE.global;
document.write("グローバルマッチプラグ:" + result + "<br />");
myRE = /MZ-7/i;
result = myRE.ignoreCase;
document.write("大文字小文字判定フラグ:" + result + "<br />");
myRE = /MZ-7/;
result = myRE.ignoreCase;
document.write("大文字小文字判定フラグ:" + result + "<br />");
//-->
</script>
</body>
</html>
検索文字指定
input 検索文字指定
検索する文字列を設定/変更します。
inputで設定した文字列でパターンマッチを行う場合はexecメソッドを使用
例
RegExp.input = "Yasuhiro Sekino";
検索文字を"Yasuhiro Sekino"に設定する
サンプル
<html>
<head>
<title>サンプル</title>
</head>
<body>
<h2>パターンマッチ実行/開始位置</h2>
<script language="JavaScript">
<!--
myRE = /MZ/i;
myRE.input = "MZ-700MZ1500MZ2500MZ3500";
rs = myRE.exec();
document.write("結果<b>" + rs + "</b><br />");
myRE.input = "MZ80K2MZ1200MZ5500MZ6500";
rs = myRE.exec();
document.write("結果<b>" + rs + "</b><br />");
//-->
</script>
</body>
</html>
最後にマッチした文字列
lastMatch 最後にマッチした文字列
lastParen 最後にマッチしたグループの文字列
例
alert(RegExp.lastMatch)
最後にマッチした文字をアラートダイアログに表示する
alert(RegExp.lastParen)
最後にマッチしたグループの文字をアラートダイアログに表示する
サンプル
<html>
<head>
<title>サンプル</title>
</head>
<body>
<h2>最後のマッチした文字列</h2>
<script language="JavaScript">
<!--
myRE = new RegExp("(MZ....)","g");
str = "MZ-700MZ1500MZ2500MZ3500";
rs = str.match(myRE);
document.write("結果<b>" + rs + "</b><br />");
document.write("lastMatchの内容" + rs.lastMatch + "<br />");
document.write("lastParenの内容" + rs.lastParen + "<br />");
//-->
</script>
</body>
</html>
マッチした文字列の左右の文字列
leftContext マッチした左側の文字
rightContext マッチした右側の文字
例
alert(RegExp.leftContext)
最後にマッチした文字列の左側の文字列を表示する
alert(RegExp.rightContext)
最後にマッチした文字列の右側の文字列を表示する
サンプル
<html>
<head>
<title>サンプル</title>
</head>
<body>
<h2>マッチした文字列の左右の文字列</h2>
<script language="JavaScript">
<!--
myRE = new RegExp("(MZ)");
str = "SHARP!MZ-2861Z3800";
rs = str.match(myRE);
document.write("文字列<b>" + str + "</b><br />");
document.write("結果<b>" + rs + "</b><br />");
document.write("leftContextの内容<b>" + rs.leftContext + "</b><br />");
document.write("rightContextの内容<b>" + rs.rightContext + "</b><br />");
//-->
</script>
</body>
</html>
この記事が気に入ったらサポートをしてみませんか?