ホームページ >ウェブフロントエンド >jsチュートリアル >js正規表現実行スキルとmatch_javascriptスキルの違いを解説
JS 正規表現は、以前は JS を使用する際にほとんど使用されませんでした。たとえ使用されたとしても、インターネット上には多くのコードがあり、すぐに使用できます。
最近、正規表現を使用する必要がある問題に遭遇しました。ついでに勉強してみましょう
正規表現オブジェクトは 2 つの方法で定義されます:
1. 最初の定義:
new RegExp(パターン, 属性); 例: var reg = new RegExp("abc","g")
パターンは式の内容を表します。上に示すように、abc と一致します
属性: g、グローバル マッチング、i は大文字と小文字を区別しません、m は複数行のマッチングを実行します、最も一般的に使用されるのは g と i
2. 2 番目の定義:/パターン/属性
。例: var reg = /abc/g;
正規表現の一部のルールはここでは説明しません: exec と match の違いのみが記録されます:
1. exec は、以下に示すように、文字列メソッドではなく、正規表現メソッドです。
上記の定義の通りvar reg = new RegExp("abc");
var str = "3abc4, 5abc6";
reg.exec(str);
2. Match は、文字列の一致する正規表現ルールを実行するメソッドです。そのパラメータは、
var reg = new RegExp("abc") ;
var str = "3abc4,5abc6";str.match(reg);
3. 配列を実行して照合します。
exec によって実行される正規表現に部分式 (/abc(s*)/ の (s*) など、括弧内の内容) がない場合、一致するものがあれば、最初に一致した文字列が返されます。現時点では配列には要素が 1 つしかないため、一致しない場合は
が返されます。var reg = new RegExp("abc") ;
var str = "3abc4,5abc6";alert(reg.exec(str));
alert(str.match(reg) );
上記のコードを実行すると、両方の内容が同じであることがわかります: abc、
4. 次のように正規表現オブジェクトをグローバル一致として定義する場合:
var reg = new RegExp("abc","g") ;
var str = "3abc4,5abc6";alert(reg.exec(str));
alert(str.一致(登録));
は abc および abc、abc です。これは、match がグローバル照合クエリを実行し、部分式がない場合に exec が一致するものだけを見つけて返します。
var reg = new RegExp("a(bc)") ;
var str = "3abc4,5abc6";
alert(reg.exec(str));alert(str.match (登録));
両方の実行の結果は、abc、bc であることがわかります。
var reg = new RegExp("a(bc)","g") ;
var str = "3abc4,5abc6";
alert(reg.exec(str));alert (str.match(reg));
この 2 つによって返される結果は、abc,bc と abc,abc,
1. 正規表現に部分式がなく、非グローバル一致として定義されている場合、exec と match の実行結果は同じであり、どちらも最初に一致した文字列の内容を返します。 2. 正規表現に部分式がなく、グローバル一致として定義されている場合、exec と match が実行され、一致する内容が複数ある場合、match は複数の要素の配列を返します。
3. 正規表現にサブ表現があり、非グローバル一致として定義されている場合、exec と match の実行結果は上記の 5 番目の場合と同じになります。4. 正規表現に部分式があり、グローバル一致として定義されている場合、exec と match の実行結果は異なります。このとき、match は部分式を無視し、完全に一致する正規表現のみを検索します。上記のケース 6 と同様に、式を実行してすべての内容を返します。
言い換えれば、exec はグローバルが定義されているかどうかとは関係ありませんが、match は非グローバルとして定義されている場合、両者の実行結果は同じになります。