見出し画像

【JavaScript】正規表現を使っみよう


正規表現オブジェクト


RegExp   正規表現オブジェクト

mStr = new RegExp("/MZ")

"MZ"にマッチさせるための正規表現文字列を変数mStrに代入します。

mStr = /MZ/

"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 = RegExp.$1


最初にパターンマッチ文字列を変数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        正規表現文字の参照

rStr = REstr.comple("if800")


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>


この記事が気に入ったらサポートをしてみませんか?