このセクションでは、js での正規表現の使用について説明します。正規オブジェクトは参照型であることに注意してください。
オブジェクトの定義と同様に、リテラルを使用して正規表現を定義することも、正規オブジェクトを使用して正規表現を定義することもできます。それらの違いは次のとおりです。使用されるエスケープにはいくつかの違いがあります。
リテラルを使用するときは、/ / を使用して正規表現をラップします。一致するパターンを記述するかどうかを指定できます。そうでない場合、デフォルトはグローバル一致ではありません。これを使用するときは、通常、リテラルの初期化を使用します。これはより単純であり、エスケープは文字列ほど複雑ではありません。
// 正则表达式 /at/g 表示匹配所有at /g表示全局搜索 var pattern1 = /at/g; // 注意不用字符串 var pattern2 = RegExp('/at', 'g');
次はエスケープする必要があります:
通常のオブジェクトの属性はリテラル変数で確認できるため、これらのメソッドはあまり役に立ちません。知っておくだけにしてください。
exec メソッドの実行結果は、すべてが一致するものではありません。ただし、最初に一致した項目の戻り値は、次のコードに示されているとおりです (グループのキャプチャの概念については、後で使用します。ここでは、一度に 1 つだけが一致し、それが返されることがわかります)配列の 0 番目の位置)
// exec的返回值 var text = 'mom and dad and baby'; var pattern = /mom( and dad( and baby)?)?/gi; var matches = pattern.exec(text); alert(matches.index); // 0 // 拥有index属性标识匹配项再字符串中的位置 alert(matches.input); // mom and dad and baby // 标识原字符串 alert(matches[0]); //mom and dad // 标识匹配的字符串 alert(matches[1]); //and dad //捕获组匹配的字符串 alert(matches[2]); //and baby
exec メソッドは、グローバル フラグ /g が実行結果に及ぼす影響に注意する必要があります。/g が記述されていない場合、グローバル マッチングは行われません。各実行は次から開始されます。 /g が記述されている場合、一致はグローバルです。次の一致は前の一致に基づいて継続されます。この状況は、以下の例を見ると説明できます
// 不写/g 每一次都是从头开始匹配 var text = 'cat, bat, sat, fat'; var pattern1 = /.at/; var matches = pattern1.exec(text); alert(matches.index); //0 alert(matches[0]); //cat alert(pattern1.lastIndex); //0 //lastIndex方法是问题的关键,注意它是pattern1对象的属性,其实就记录了这个正则匹配到哪个位置了,这里都是0说明是一直从零开始匹配 matches = pattern1.exec(text); alert(matches.index); //0 alert(matches[0]); //cat alert(pattern1.lastIndex); //0
/g を追加して、その方法を見てみましょう結果は変わります
var text = 'cat, bat, sat, fat'; var pattern1 = /.at/g; var matches = pattern1.exec(text); alert(matches.index); //0 alert(matches[0]); //cat alert(pattern1.lastIndex); //3 //lastIndex标识经过了这次匹配,下次匹配应该从什么位置开始进行 matches = pattern1.exec(text); alert(matches.index); //5 // 标识匹配到的位置 alert(matches[0]); //bat alert(pattern1.lastIndex); //8
テストメソッドは、一致した後にtrue falseを返すために使用されます。一致があるかどうかだけを知りたい場合で、詳細を知りたくない場合は、結果が表示されたら、これを使用します。ユーザー入力が有効かどうかを判断するために if ステートメントでよく使用されます。
var text = '000-00-0000'; var pattern = /\d{3}-\d{2}-\d{4}/; if (pattern.test(text)) { alert('matched'); //matched }
RegExp のプロパティを通じて、入力された文字列が直前に一致したものや、最後に一致した情報など、グローバルな定期情報を取得できます。グローバル静的変数、グローバル属性がサポートする情報を見てみましょう。
グローバル属性は、長い属性名と短い属性名の両方を使用して取得できることに注意してください。長い属性と短い属性の使用法を見てみましょう
関連チュートリアルの推奨事項:JavaScript ビデオ チュートリアル
以上がJavaScript で正規表現を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。