ホームページ  >  記事  >  ウェブフロントエンド  >  javascript_javascriptスキルの正規マッチング方法を学ぶ

javascript_javascriptスキルの正規マッチング方法を学ぶ

WBOY
WBOYオリジナル
2016-05-16 15:13:451106ブラウズ

JavaScript での通常のマッチングには、match、exec、test の 3 つのメソッドがあります。これらのメソッドはすべて文字列と RegExp オブジェクトに関連していますが、使用シナリオが異なるため、混乱しやすいです。 match は文字列のメソッドで、RegExp オブジェクトをパラメータとして受け取ります。その他は RegExp オブジェクトのメソッドで、文字列パラメータを受け取ります。

var str = 'abcdef12ab34cd56ef';
var patt = new RegExp('ab'); //主意是非全局匹配

var ret_test = patt.test(str);
console.log(ret_test);
var ret_match = str.match(patt);
console.log(ret_match);
var ret_exec = patt.exec(str);
console.log(ret_exec);

1.regExp.test(文字列)

このメソッドは最も単純です。文字列内で regExp に一致する文字列が見つかった場合は true を返し、一致する文字列が見つからない場合は false を返します。

2. regExp.exec(文字列)

この方法は少し複雑です。

regExp にグローバル フラグがない場合、その戻り値は文字列配列になります。配列の 0 番目の要素は、regExp に部分式がある場合、配列の 1 番目の要素が regExp の最初の要素になります。 -expression、2 番目の要素は regExp の 2 番目の部分式です...というように続きます。上記の例では、patt = new RegExp('f(

\d)(\d)','g') の場合、ret_exec は文字列配列 ['f12','1' になります。 、「2」]。

regExp にグローバル フラグ (g オプション) がある場合、戻り値は最初に一致した文字列で構成される配列です。regExp に部分式がある場合は、要素 No.配列の 1 は regExp の最初の部分式、要素 2 は regExp の 2 番目の部分式です...というようになります。同時に、regExp オブジェクトの属性 (lastIndex) が変更され、lastIndex には文字列の最後の文字の位置とそれ以降の位置が設定されます (上記の例では、lastIndex = 2)。再度regExp.exec(string)を呼び出すと、regExp.lastIndexから検索範囲が検索されます。この時点では、戻り値は依然として単一要素の文字列配列、lastIndex = 10 です。私たちは多くの場合、while ループを使用して文字列内の一致を反復処理します。


var patt = new RegExp('ab', 'g'),
  str = 'abcdef12ab34cd56ef', ret;
while((ret = patt.exec(str))!=null) {
  console.log(ret);
}
//输出
['ab']
['ab']
exec メソッドが返すものは標準配列ではありませんが、2 つの属性も持っているため、クラス配列とみなされます: input は入力文字列、index は現在一致する文字列の最初の文字の位置です。入力で。

3. string.match(regExp)

このメソッドは、regExp の lastIndex 属性を考慮する必要がないため、exec よりも簡単です。同様に、2 つの状況 (グローバル マッチングと非グローバル マッチング) を区別する必要があります

regExp にグローバル フラグがない場合、戻り値は exec を呼び出した場合と同じで、配列の 0 番目の要素は一致した文字列になります。regExp に部分式がある場合、配列の最初の要素は regExp です。の最初の部分式、2 番目の要素は regExp の 2 番目の部分式、というようになります。考え方としては、配列には 2 つの属性もあります。input は入力文字列 string、index は input 内で現在一致する文字列の最初の文字の位置です。

regExp にグローバル フラグ (g オプション) がある場合、それは非常に単純であり、私たちの理解と一致しています。一致したすべての文字列で構成される配列を返します。これは、入力属性もインデックス属性も持たない標準の配列です。戻り値の配列には、一致した文字列以外の情報はありません。

上記の分析から、文字列が特定の正規表現に一致するかどうかだけを判断したい場合は、テスト メソッドを使用します。一致する文字列をすべて一度に取得する場合、または最初に一致する文字列だけを検索する場合は、match メソッドを使用します。複数回照合する必要があり、元の文字列内で一致した各文字列の位置を知る必要がある場合、または正規表現内に注意が必要な部分式情報がある場合は、exec メソッドを使用します。

上記は JavaScript における規則的なマッチングのさまざまな方法の紹介であり、皆さんの学習に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。