JavaScript RegExp オブジェクト
正規表現とは何ですか?
正規表現は文字のパターンオブジェクトを記述します。
テキストを取得する場合、パターンを使用して取得する内容を説明できます。 RegExp はこのパターンです。
簡単なパターンは単一の文字にすることができます。
より複雑なパターンにはより多くの文字が含まれており、解析、形式チェック、置換などに使用できます。
文字列内の検索位置や検索する文字の種類などを指定できます。
JavaScript は、正規表現に関連する操作と関数を完了するための RegExp オブジェクトを提供します。各正規表現パターンは RegExp インスタンスに対応します
RegExp オブジェクトのインスタンスを作成するには 2 つの方法があります。
RegExp の明示的なコンストラクターを使用します。構文は次のとおりです: new RegExp("pattern"[,"flags"])。
RegExp の暗黙的コンストラクターをプレーンテキスト形式で使用します: /pattern/[flags]。
pattern 部分は、使用される正規表現パターンのテキストであり、これは必須です。最初の方法では、パターン部分は JavaScript 文字列の形式で存在し、二重引用符または一重引用符で囲む必要があります。2 つ目の方法では、パターン部分は 2 つの「/」でネストされており、引用符は使用できません。 。
flags 部分は、正規表現のフラグ情報を設定します (オプション)。フラグ部分が設定されている場合、最初の方法では文字列の形式で存在し、2 番目の方法では最後の「/」文字の直後のテキストの形式で存在します。 flags には、次のフラグ文字を組み合わせて指定できます。
g はグローバルフラグです。このフラグが設定されている場合、テキストに対する検索と置換の操作は、テキストの一致するすべての部分に影響します。このフラグが設定されていない場合は、最も古い一致のみが検索され、置換されます。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> <script type="text/javascript"> var myString="这是第一个正则表达式的例子"; var myregex = new RegExp("一个"); // 创建正则表达式 if (myregex.test(myString)){ document.write("找到了指定的模式!"); } else{ document.write("未找到指定的模式。"); } </script> </head> <body> </body> </html>
RegExp 修飾子
g はグローバルシンボルです。このフラグが設定されている場合、テキストに対する検索と置換の操作は、テキストの一致するすべての部分に影響します。このフラグが設定されていない場合は、最も古い一致のみが検索され、置換されます。
i は大文字と小文字を無視するフラグです。このフラグが設定されている場合、一致比較を行うときに大文字と小文字が無視されます。
m は複数行のフラグです。このフラグが設定されていない場合、メタキャラクタ「^」は検索文字列全体の先頭のみと一致し、メタキャラクタ「$」は検索文字列の末尾のみと一致します。このフラグが設定されている場合、「^」は検索文字列の「n」または「r」の後の位置(次の行の先頭)にも一致し、「$」も検索文字列に一致します。 「n」または「r」の後 (つまり、次の行の終わり)。 RegExp オブジェクトのプロパティは、静的プロパティとインスタンス プロパティに分けられます。
1 静的属性
(1) インデックス属性。これは、現在の表現パターンの最初に一致するコンテンツの開始位置です (0 から数えます)。初期値は -1 で、一致が成功するたびにインデックス属性が変更されます。
(2) 入力属性。処理対象の現在の文字列を返します。これは $_ と省略できます。初期値は空の文字列 "" です。
(3)lastIndex 属性。現在の表現パターンが最初に一致するコンテンツ内の最後の文字の次の位置です。カウントは 0 から始まります。初期値は -1 で、検索を継続することを意味します。一致するたびに開始位置から開始され、それに応じて lastIndex 属性値が変更されます。
(4)lastMatch 属性。現在の式パターンの最後に一致する文字列です。$& と省略できます。初期値は空の文字列「」です。 lastMatch 属性の値は、一致が成功するたびに変化します。
(5)lastParen 属性。式パターン内に囲まれた部分一致がある場合、それは現在の式パターン内の最後の部分一致と一致する部分文字列であり、$+ と省略できます。初期値は空の文字列「」です。 lastParen 属性の値は、一致が成功するたびに変化します。
(6)leftContext 属性。現在の式パターンで最後に一致する文字列の左側にあるすべての文字列であり、$` と省略できます (「'」はキーボードの「Esc」の下にある逆引用符です)。初期値は空文字列「」です。一致が成功するたびに、そのプロパティ値が変化します。
(7) rightContext 属性。これは、現在の式パターンで最後に一致する文字列の右側にあるすべてのものであり、$' と省略できます。初期値は空文字列「」です。一致が成功するたびに、そのプロパティ値が変化します。
(8)$1…$9 の属性。これらのプロパティは読み取り専用です。式パターン内に囲まれたサブマッチがある場合、$1...$9 属性値は、それぞれ最初から 9 番目のサブマッチによってキャプチャされた内容になります。 9 個を超える部分一致がある場合、$1...$9 属性はそれぞれ最後の 9 個の部分一致に対応します。式パターンでは、括弧で囲まれたサブマッチをいくつでも指定できますが、RegExp オブジェクトは最後の 9 つのサブマッチの結果のみを保存できます。 RegExp インスタンス オブジェクトの一部のメソッドによって返される結果配列では、括弧内のすべての部分一致結果を取得できます。
2 インスタンス属性
(1) グローバル属性。 RegExp オブジェクト インスタンスの作成時に指定されたグローバル フラグ (g) のステータスを返します。 RegExp オブジェクト インスタンスの作成時に g フラグが設定されている場合、このプロパティは True を返します。それ以外の場合、デフォルト値は False を返します。
(2)ignoreCase 属性。 RegExp オブジェクト インスタンスの作成時に指定されたignoreCase フラグ (i) のステータスを返します。 RegExp オブジェクト インスタンスの作成時に i フラグが設定されている場合、このプロパティは True を返します。それ以外の場合、デフォルト値は False を返します。
(3) multiLine 属性。 RegExp オブジェクト インスタンスの作成時に指定された multiLine フラグ (m) のステータスを返します。 RegExp オブジェクト インスタンスの作成時に m フラグが設定されている場合、このプロパティは True を返します。それ以外の場合、デフォルト値は False を返します。
(4) ソース属性。 RegExp オブジェクト インスタンスの作成時に指定された式テキスト文字列を返します。
RegExpオブジェクトメソッド
1テストメソッド
構文形式はtest(str)です。このメソッドは、RegExp オブジェクト インスタンスの作成時に指定された式パターンが文字列内に存在するかどうかを確認し、存在する場合は True を返し、存在しない場合は False を返します。一致が見つかった場合、RegExp オブジェクト内の関連する静的プロパティが更新されて、一致が反映されます。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <script> var str="Is this all there is?"; var patt1=/is/gi; document.write(str.match(patt1)); </script> </body> </html>
2 execメソッド
構文形式はexec(str)です。このメソッドは、RegExp オブジェクト インスタンスの作成時に指定された式パターンを使用して文字列を検索し、検索結果を含む配列を返します。正規表現にグローバル フラグ (g) が設定されている場合は、RegExp オブジェクトの lastIndex 属性値で指定された位置から毎回 exec メソッドと test メソッドを複数回呼び出すことで、文字列内を継続的に検索できます。
グローバル フラグ (g) が設定されていない場合、exec メソッドと test メソッドは RegExp オブジェクトの lastIndex 属性値を無視し、文字列の先頭から検索を開始します。
exec メソッドで一致が見つからない場合、戻り値は null になります。一致が見つかった場合は、配列が返され、その一致を反映するように RegExp オブジェクト内の関連する静的プロパティが更新されます。返された配列の要素 0 には完全な一致結果が含まれ、要素 1 ~ n は式パターンで定義された各部分一致の結果です。
exec メソッドによって返される配列には、input、index、lastIndex という 3 つの属性があります。
入力属性は、検索された文字列全体です。
index 属性は、検索文字列全体内の一致する位置を参照します。
lastIndex 属性は、一致した部分文字列の最後の文字の次の文字位置を参照します。
りー