JavaScript 正規表現のソースを表示
新しいページはコチラ
移動:
案内
,
検索
[[JAVA Script#リファレンス]]に戻る。 引数に正規表現(Regular Expression)をとるメソッドのためのオブジェクトです。.execメソッドの引数で検索文字列を設定できるので、.RegExpオブジェクトだけで正規表現検索が実行できます。ややこしい正規表現による記述を再利用する場合には、このオブジェクトを使うとスッキリすることもあります。更に正規表現パターンマッチングを実施したときの便利な機能も提供してくれます。 == '''正規表現オブジェクトの生成 RegExp''' == 正規表現オブジェクト(入れ物・モノ)を生成するには、以下のように定義します。 *regexData1 = new RegExp() //空の正規表現オブジェクト *regexData2 = new RegExp("Regular Expression")//正規表現文字列 /Regular Expression/と同じ *regexData3 = new RegExp(”Regular Expression”, "g") //正規表現検索オプション初期化 /Regular Expression/g と同じ 上記のように生成した正規表現オブジェクトを文字列オブジェクトの正規表現を引数とするメソッド.matchや.replaceや.searchの引数に指定することができます。 サンプルプログラムは以下のとおりです。 <syntaxhighlight lang="javascript" line start="1"> <HTML> <HEAD> <TITLE>JavaScript RegExp</TITLE> </HEAD> <BODY> JavaScript RegExp<br /> <SCRIPT Language="JavaScript"> <!-- regexData1 = new RegExp() //空の正規表現オブジェクト regexData2 = new RegExp("Regular Expression")//正規表現文字列 /Regular Expression/と同じ regexData3 = new RegExp("Regular Expression", "g") //正規表現検索オプション初期化 /Regular Expression/g と同じ strData = new String("正規表現文字列検索(Regular Expression)(Regular Expression2)"); document.write("■RegExp<br />"); document.write("正規表現文字列検索 = ", strData.match(regexData2), "<br />"); document.write("正規表現文字列検索 = ", strData.match(regexData3), "<br />"); document.write("パターンマッチ = ", $1, $2,"<br />"); --> </SCRIPT> </BODY> </HTML> </syntaxhighlight> [[Media:JavaScript RegExp 01 declare.html|サンプル実行結果]] == '''正規表現検索の検索文字列設定・参照 RegExp.input , RegExp.$_''' == 正規表現検索を実行する都度、書き換わるRegExpオブジェクト自体が保有する静的なプロパティです。つまり、オブジェクトから生成した変数オブジェクト毎には存在しないものです。したがって利用する場合は参照のみで、以下のようにして参照します。 参照の場合には *strRegExpData1 = RegExp.input のようにします。もしくは *strRegExpData2 = RegExp.$_ 設定するには *RegExp.input = "文字列検索対象(Regular Expression)" のようにします。もしくは *RegExp.$_ = "文字列検索対象(Regular Expression)" でも、検索対象を設定できます。ただし、正規表現検索の結果で一致するものがなかった場合は、RegExp.input、RegExp.$_、exec()の引数に与えた文字列が反映されません。 サンプルプログラムは以下のとおりです。 <syntaxhighlight lang="javascript" line start="1"> <HTML> <HEAD> <TITLE>JavaScript RegExp input</TITLE> </HEAD> <BODY> JavaScript RegExp input<br /> <SCRIPT Language="JavaScript"> <!-- regexData1 = new RegExp("Regular Expression")//正規表現文字列 /Regular Expression/と同じ regexData2 = new RegExp("Regular Expression2")//正規表現文字列 /Regular Expression2/と同じ document.write("■RegExp input<br />"); regexData2.exec("正規表現文字列検索(Regular Expression2)"); document.write("正規表現文字列検索input = ", RegExp.input, "<br />"); regexData1.exec("$_正規表現文字列検索(RegularExpression)"); document.write("正規表現文字列検索$_ = ", RegExp.$_, "<br />");//マッチしてないから入れ替わらない。 RegExp.input = "$_正規表現文字列検索(RegularExpression)" regexData1.exec(); document.write("正規表現文字列検索$_ = ", RegExp.$_, "<br />"); --> </SCRIPT> </BODY> </HTML> </syntaxhighlight> [[Media:JavaScript RegExp 02 input.html|サンプル実行結果]] == '''正規表現文字列設定 .compile''' == オブジェクト変数の初期化時にも設定できる正規表現文字列を再設定することができるメソッドです。引数には正規表現を設定できます。 *regexData.compile("regular") 引数は :*第一引数:正規表現文字列 だけです。 サンプルプログラムは以下のとおりです。 <syntaxhighlight lang="javascript" line start="1"> <HTML> <HEAD> <TITLE>JavaScript RegExp compile</TITLE> </HEAD> <BODY> JavaScript RegExp compile<br /> <SCRIPT Language="JavaScript"> <!-- regexData1 = new RegExp("Regular Expression2")//正規表現文字列 /Regular Expression2/と同じ document.write("■RegExp compile<br />"); regexData1.exec("正規表現文字列検索(Regular Expression2)"); document.write("正規表現文字列検索input = ", RegExp.input, "<br />"); regexData1.compile("Regular"); regexData1.exec("$_正規表現文字列検索(RegularExpression)"); document.write("正規表現文字列検索$_ = ", RegExp.$_, "<br />"); --> </SCRIPT> </BODY> </HTML> </syntaxhighlight> [[Media:JavaScript RegExp 03 compile.html|サンプル実行結果]] == '''正規表現文字列参照 .source''' == オブジェクト変数の初期化時にも設定できる正規表現文字列を参照できるメソッドです。 *regexData.source 引数は設定できません。 サンプルプログラムは以下のとおりです。 <syntaxhighlight lang="javascript" line start="1"> <HTML> <HEAD> <TITLE>JavaScript RegExp compile</TITLE> </HEAD> <BODY> JavaScript RegExp compile<br /> <SCRIPT Language="JavaScript"> <!-- regexData1 = new RegExp("Regular Expression2")//正規表現文字列 /Regular Expression2/と同じ document.write("■RegExp compile<br />"); regexData1.exec("正規表現文字列検索(Regular Expression2)"); document.write("正規表現文字列検索input = ", RegExp.input, "<br />"); document.write("正規表現文字列検索source = ", regexData1.source, "<br />"); regexData1.compile("Regular"); regexData1.exec("$_正規表現文字列検索(RegularExpression)"); document.write("正規表現文字列検索$_ = ", RegExp.$_, "<br />"); document.write("正規表現文字列検索source = ", regexData1.source, "<br />"); --> </SCRIPT> </BODY> </HTML> </syntaxhighlight> [[Media:JavaScript RegExp 04 source.html|サンプル実行結果]] == '''正規表現検索実行 .exec''' == このメソッドはこれまでのサンプルですでに使っていました。RegExp.inputやRegExp.$_といった検索対象文字列を設定する静的プロパティを利用していた場合に、このexecメソッドに引数無しで呼び出したときには、初期化時や.compileに与えられた正規表現にしたがって正規表現検索処理が実行されます。またRegExp.inputやRegExp.$_に設定された文字列を検索対象にしない場合には引数に検索対象文字列を設定することで、所望の検索が実行されます。 メソッドの利用方法は以下のようにします。 *strRegExp.exec() 上記のように引数なし、あるいは *strRegExp.exec("正規表現文字列検索 Regular Expression") *strRegExp.exec(strData) と上記のように引数を設定することもできます。 :*第一引数:検索対象文字列 プログラムサンプルは以下のとおりです。 <syntaxhighlight lang="javascript" line start="1"> <HTML> <HEAD> <TITLE>JavaScript RegExp exec</TITLE> </HEAD> <BODY> JavaScript RegExp exec<br /> <SCRIPT Language="JavaScript"> <!-- regexData1 = new RegExp("Regular Expression2") //正規表現文字列 /Regular Expression2/と同じ document.write("■RegExp exec<br />"); RegExp.input = "正規表現文字列検索(Regular Expression2)"; regexData1.exec(); document.write("正規表現文字列検索input = ", RegExp.input, "<br />"); document.write("正規表現文字列検索source = ", regexData1.source, "<br />"); regexData1.compile("Regular"); regexData1.exec("$_正規表現文字列検索(RegularExpression)"); document.write("正規表現文字列検索$_ = ", RegExp.$_, "<br />"); document.write("正規表現文字列検索source = ", regexData1.source, "<br />"); --> </SCRIPT> </BODY> </HTML> </syntaxhighlight> [[Media:JavaScript RegExp 05 exec.html|サンプル実行結果]] == '''正規表現検索の一致確認 .test''' == このメソッドはexecによく似ていますが、その名のとおり試すことを目的としています。まずは、一致するものがあるのかないのかという判断だけするという目的です。RegExp.inputやRegExp.$_といった検索対象文字列を設定する静的プロパティを利用していた場合に、このtestメソッドに引数無しで呼び出したときには、初期化時や.compileに与えられた正規表現にしたがって正規表現検索処理が実行されます。またRegExp.inputやRegExp.$_に設定された文字列を検索対象にしない場合には引数に検索対象文字列を設定することで、所望の検索のテストが実施されます。 メソッドの利用方法は以下のようにします。 *bRegexResult = strRegExp.test() 上記のように引数なし、あるいは *bRegexResult = strRegExp.test("正規表現文字列検索 Regular Expression") *bRegexResult = strRegExp.test(strData) と上記のように引数を設定することもできます。 :*第一引数:検索対象文字列 プログラムサンプルは以下のとおりです。 <syntaxhighlight lang="javascript" line start="1"> <HTML> <HEAD> <TITLE>JavaScript RegExp exec</TITLE> </HEAD> <BODY> JavaScript RegExp exec<br /> <SCRIPT Language="JavaScript"> <!-- regexData1 = new RegExp("Regular Expression2") //正規表現文字列 /Regular Expression2/と同じ document.write("■RegExp exec<br />"); RegExp.input = "正規表現文字列検索(Regular Expression2)"; document.write("検索試験test = ", regexData1.test(), "<br />"); document.write("検索実行exec = ", regexData1.exec(), "<br />"); document.write("正規表現文字列検索input = ", RegExp.input, "<br />"); document.write("正規表現文字列検索source = ", regexData1.source, "<br />"); regexData1.compile("Regular"); document.write("検索試験test = ", regexData1.test("$_正規表現文字列検索(RegularExpression)"), "<br />"); document.write("検索実行exec = ", regexData1.exec("$_正規表現文字列検索(RegularExpression)"), "<br />"); document.write("正規表現文字列検索$_ = ", RegExp.$_, "<br />"); document.write("正規表現文字列検索source = ", regexData1.source, "<br />"); --> </SCRIPT> </BODY> </HTML> </syntaxhighlight> [[Media:JavaScript RegExp 06 test.html|サンプル実行結果]] == '''正規表現検索の検索条件確認 .global(グローバルマッチング)''' == RegExgオブジェクトを引き継いだ変数が検索オプションのglobalマッチングを有効にしている状態であるかを確認するメソッドです。 以下のようにして利用します。 *bRegexGlobal = strRegExp.global プログラムサンプルは以下のとおりです。 <syntaxhighlight lang="javascript" line start="1"> <HTML> <HEAD> <TITLE>JavaScript RegExp global</TITLE> </HEAD> <BODY> JavaScript RegExp global<br /> <SCRIPT Language="JavaScript"> <!-- regexData1 = new RegExp("Regular Expression2","g"); //正規表現文字列 /Regular Expression2/gと同じ regexData2 = /Regular Expression/g; //正規表現文字列 /Regular Expression/gと同じ document.write("■RegExp global<br />"); document.write("正規表現文字列検索オプション regexData1.global = ", regexData1, "<br />"); document.write("正規表現文字列検索オプション regexData2.global = ", regexData2, "<br />"); --> </SCRIPT> </BODY> </HTML> </syntaxhighlight> [[Media:JavaScript RegExp 07 global.html|サンプル実行結果]] == '''正規表現検索の検索条件確認 .ignoreCase(大文字小文字区別無視)''' == RegExgオブジェクトを引き継いだ変数が検索オプションのignoreCaseマッチングを有効にしている状態であるかを確認するメソッドです。 以下のようにして利用します。 *bRegexIgnoreCase = strRegExp.ignoreCase プログラムサンプルは以下のとおりです。 <syntaxhighlight lang="javascript" line start="1"> <HTML> <HEAD> <TITLE>JavaScript RegExp ignoreCase</TITLE> </HEAD> <BODY> JavaScript RegExp ignoreCase<br /> <SCRIPT Language="JavaScript"> <!-- regexData1 = new RegExp("Regular Expression2","i"); //正規表現文字列 /Regular Expression2/gと同じ regexData2 = /Regular Expression/i; //正規表現文字列 /Regular Expression/gと同じ document.write("■RegExp ignoreCase<br />"); document.write("正規表現文字列検索オプション regexData1.ignoreCase = ", regexData1.ignoreCase, "<br />"); document.write("正規表現文字列検索オプション regexData2.ignoreCase = ", regexData2.ignoreCase, "<br />"); --> </SCRIPT> </BODY> </HTML> </syntaxhighlight> [[Media:JavaScript RegExp 08 ignoreCase.html|サンプル実行結果]] == '''正規表現検索の検索条件指定 RegExp.multiline(改行コード無視) , RegExp.$*''' == 検索対象の文字列の中の改行コードを無視する形式で正規表現検索をかけるか?かけないか?を指定する静的なRegExpオブジェクトのプロパティ値です。このプロパティ値がtrueなら改行コードを含めて検索し、falseなら改行コードを無視することになります。 以下のようにして利用します。 *RegExp.multiline = false あるいは *RegExp.$* = false として利用します。 プログラムサンプルは以下のとおりです。 <syntaxhighlight lang="javascript" line start="1"> <HTML> <HEAD> <TITLE>JavaScript RegExp multiline</TITLE> </HEAD> <BODY> JavaScript RegExp multiline<br /> <SCRIPT Language="JavaScript"> <!-- regexData1 = new RegExp("Regular\nExpression"); //正規表現文字列 /Regular Expression2/gと同じ regexData2 = /Regular Expression/i; //正規表現文字列 /Regular Expression/gと同じ document.write("■RegExp multiline<br />"); RegExp.input = "Regular\nExpression2"; RegExp.multiline = true; document.write("正規表現文字列検索 RegExp.multiline(true) = ", regexData1.exec(), "<br />"); RegExp.multiline = false; document.write("正規表現文字列検索 RegExp.multiline(false) = ", regexData1.exec(), "<br />"); --> </SCRIPT> </BODY> </HTML> </syntaxhighlight> と説明したとおりになるかなって思ったんですけど、ならないね。もうちょっと研究してみます。orz何が原因なんだろ...鬱 [[Media:JavaScript RegExp 09 multiline.html|サンプル実行結果]] == '''正規表現検索開始位置の設定 .lastIndex''' == == '''パターンマッチング文字列参照 .$1~.$9 , $1~$9''' == == '''最後の検索結果参照 .lastMatch ,$&''' == == '''最後のパターンマッチング文字列参照 .lastPattern , $+''' == == '''最後の検索結果に対して、先頭の文字から検索位置までの文字列を取得 .leftContext , $`''' == == '''最後の検索結果に対して、検索終了位置から末尾までの文字列を取得 .rightContext , $<nowiki>'</nowiki>''' == [[JAVA Script#リファレンス]]に戻る。
JavaScript 正規表現
に戻る。
個人用ツール
ログイン
名前空間
ページ
議論
変種
表示
閲覧
ソースを表示
履歴表示
操作
検索
案内
メインページ
コミュニティ・ポータル
最近の出来事
最近の更新
おまかせ表示
ヘルプ
ツールボックス
リンク元
関連ページの更新状況
特別ページ