ホームページ > ウェブフロントエンド > jsチュートリアル > javascript_javascriptスキルにおけるString.match()とRegExp.exec()の違いの説明

javascript_javascriptスキルにおけるString.match()とRegExp.exec()の違いの説明

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-05-16 17:44:05
オリジナル
1011 人が閲覧しました

1. これら 2 つのメソッドは、一致が成功した場合は配列を返し、一致が失敗した場合は null を返します。
2. RegExp のグローバル属性が false の場合、これら 2 つのメソッドの戻り値の配列は同じになります。

配列の 0 番目の要素はパターン全体の最初に一致する文字列であり、次の要素はパターンの最初に一致する部分一致文字列です。
さらに、配列には、index と input という 2 つの追加属性があります。Index は一致する文字列の開始位置であり、input は入力文字列全体です。
このとき、RegExp の lastIndex 属性は常に 0 です。
デモ:

コードをコピー コードは次のとおりです:

var s = 'これは文字列です。
var p = /bw*(i)sb/;
var re = p.exec(s); console.log ('match_array: ' JSON.stringify(rm));
console.log('match_array_index: ' rm.index);
console.log('match_array_input: ' rm.input); >console.log('--------------------------');
console.log('exec_array: ' JSON.stringify (re ));
console.log('exec_array_index: ' re.index);
console.log('exec_array_input: ' re.input);


(Firefox コントロール台湾):


コードをコピー コードは次のとおりです: match_array: [ "this","i "]
match_array_index: 0
match_array_input: これは文字列です
---------------------- ---
exec_array: ["this","i"]
exec_array_index: 0
exec_array_input: これは文字列です


3 RegExp のグローバル属性がtrue の場合、返される配列は異なります。
match メソッドによって返される配列には、部分一致する文字列や追加の属性を含まない、すべての一致する文字列が含まれます。この時点では、lastIndex 属性は無効です。
exec メソッドが返す配列形式は、この時点で RegExp の lastIndex 属性が有効であることを除いて、global が false の場合と同じです。lastIndex で示された文字からマッチングが開始され、メソッドが実行された後、 lastIndex は次の文字で現在一致する文字列に設定されるため、exec メソッドがループ内で実行されると、文字列が最終的に null を返し、lastIndex が 0 に設定されるまで、文字列全体が順番に一致します。
デモ:



コードをコピー コードは次のとおりです: var s = 'これは文字列です';
var p = /bw*(i)sb/g;
var re; : ' JSON .stringify(rm));
console.log('match_array_index: ' rm.index);
console.log('match_array_input: ' rm.input); .exec( s)){
console.log('----------------------------'); .log( 'exec_array: ' JSON.stringify(re));
console.log('exec_array_index: ' re.index);
console.log('exec_array_input: ' re.input); console.log ('regexp_lastIndex: ' p.lastIndex);
}
console.log('----------------------- --- ');
console.log('exec_array: ' re);
console.log('regexp_lastIndex: ' p.lastIndex);






コードをコピーします

コードは次のとおりです:

match_array: ["this","is"] match_array_index: 未定義 match_array_input: 未定義 ---------------------------- exec_array: ["this ","i"] exec_array_index: 0 exec_array_input: これは文字列です
regexp_lastIndex: 4
------- ------ --
exec_array: ["is","i"]
exec_array_index: 5
exec_array_input: これは文字列です
regexp_lastIndex: 7
---- ------ -------
exec_array: null
regexp_lastIndex: 0


要約:

1. g 識別子がない場合、match メソッドと exec メソッドは同じ効果を持ちます。g 識別子がある場合、exec メソッドは最も完全な一致結果を提供します。
2. ちなみに、ここで述べている RegExp.test() メソッドは、一致する結果があれば true を返します。 false の場合、実行プロセスは exec と同じです。 (p.exec(s) != null) と同等。
3. RegExp の lastIndex 属性には g 識別子があり、exec メソッドと test メソッドでは有効ですが、それ以外の場所では無効です。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート