js正規表現実行スキルとmatch_javascriptスキルの違いを解説

WBOY
リリース: 2016-05-16 17:01:43
オリジナル
872 人が閲覧しました

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 が一致するものだけを見つけて返します。

5. 式に部分式が含まれる場合:

var reg = new RegExp("a(bc)") ;

var str = "3abc4,5abc6";

alert(reg.exec(str));

alert(str.match (登録));

両方の実行の結果は、abc、bc であることがわかります。

6. if 正規表現オブジェクトがグローバル一致として定義されている場合

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 は非グローバルとして定義されている場合、両者の実行結果は同じになります。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!