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 属性は、一致した部分文字列の最後の文字の次の文字位置を参照します。
りー


学び続ける
||
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> <script type="text/javascript"> var strSrc = "xxa1b01c001yya2b02c002zz"; var re = /a(\d)b(\d{2})c(\d{3})/gi; var arr, count = 0; while ((arr = re.exec(strSrc))!= null) { displayResult(); } function displayResult() { document.write("<p>这是用正则表达式/" + re.source + "/gi对字符串<br>" + RegExp.input + "进行第" + (++count) + "次搜索的结果:<br>"); document.write("RegExp.index为" + RegExp.index + "<br>"); document.write("RegExp.lastIndex为" + RegExp.lastIndex + "<br>"); document.write("RegExp.lastMatch为" + RegExp.lastMatch + "<br>"); document.write("RegExp.lastParen为" + RegExp.lastParen + "<br>"); document.write("RegExp.leftContext为" + RegExp.leftContext + "<br>"); document.write("RegExp.rightContext为" + RegExp.rightContext + "<br>"); document.write("RegExp.$1为" + RegExp.$1 + "<br>"); document.write("RegExp.$2为" + RegExp.$2 + "<br>"); document.write("RegExp.$3为" + RegExp.$3 + "<br>"); document.write("RegExp.$4为" + RegExp.$4 + "<br>"); document.write("arr.index为" + arr.index + "<br>"); document.write("arr.input为" + arr.input + "<br>"); document.write("arr.lastIndex为" + arr.lastIndex + "<br>"); document.write("返回数组的元素个数为" + arr.length + "<br>"); document.write("返回数组的内容为[]"); for(var i=0; i<arr.length; i++) { if(i < arr.length-1) document.write("" + arr[i] + ""); else document.write(("" + arr[i] + "")+"<p>"); } } </script> </head> <body> </body> </html>
  • おすすめコース
  • コースウェアのダウンロード
現時点ではコースウェアはダウンロードできません。現在スタッフが整理中です。今後もこのコースにもっと注目してください〜