最初の console.log 出力がこのようになっているのはなぜですか?
小伙看你根骨奇佳,潜力无限,来学PHP伐。
正規表現が実行されると、RegExp オブジェクトの lastIndex が変更される可能性があります。
test メソッドは、文字列が特定の規則に一致するかどうかを検出するために使用され、文字列に規則に一致するテキストが含まれている限り、メソッドは true を返し、それ以外の場合は false を返します。
この影響は、exec メソッドの説明で分析されます。
exec メソッドは、正規表現に対する文字列の一致を検出するために使用され、一致するテキストが見つかった場合は結果の配列を返し、それ以外の場合は null を返します。
0番目の項目は正規表現で取得したテキストを表します
1st~n 番目の項目は 1~n 番目の後方参照を表し、1~n 番目のグループでキャプチャされたテキストを指します。 RegExp.$ + "Number 1~n" を使用してグループ内のテキストを取得できます。順番に
index は一致する文字列の最初の位置を表します
input は取得される文字列を表します
正規表現にグローバルフラグ「g」が付いているかどうかに関係なく、exec の動作は同じですが、正規表現オブジェクトの動作がどのように変化するかについて詳しく説明します。違う
regにグローバルマーク「g」が含まれている場合、reg.lastIndex属性は元の文字列内で一致した文字列の末尾以降の位置、つまり次の一致が開始される位置を表します。 == array.index (開始位置と一致) + array[0].length (文字列の長さと一致) 以下のように:
取得が続くと、array.index の値が増加します。つまり、reg.lastIndex の値も同期的に増加します。したがって、exec メソッドを繰り返し呼び出すことで、文字列内のすべての一致を調べることもできます。テキスト。exec メソッドがテキストと一致しなくなると、null が返され、reg.lastIndex プロパティが 0 にリセットされます。
上記のコードでは、exec メソッドが繰り返し呼び出されると、reg.lastIndex プロパティは最終的に 0 にリセットされます。
問題のレビュー
リーリー
regにグローバルフラグ「g」が含まれていない場合、execメソッドの実行結果(配列)はstring.match(reg)メソッドの実行結果と全く同じになります。
このスニペットは、正規表現フロントエンド ユーザー マニュアル | louis blog から引用しています。役に立った場合は、「いいね!」をお願いします。
正規表現が実行されると、RegExp オブジェクトの lastIndex が変更される可能性があります。
test メソッドは、文字列が特定の規則に一致するかどうかを検出するために使用され、文字列に規則に一致するテキストが含まれている限り、メソッドは true を返し、それ以外の場合は false を返します。
実際、正規表現にグローバル フラグ (パラメータ g 付き) がある場合、テスト メソッドは次のように正規オブジェクトの lastIndex 属性の影響も受けます。 リーリーこの影響は、exec メソッドの説明で分析されます。
exec メソッドは、正規表現に対する文字列の一致を検出するために使用され、一致するテキストが見つかった場合は結果の配列を返し、それ以外の場合は null を返します。
構文: exec(string)0番目の項目は正規表現で取得したテキストを表します
1st~n 番目の項目は 1~n 番目の後方参照を表し、1~n 番目のグループでキャプチャされたテキストを指します。 RegExp.$ + "Number 1~n" を使用してグループ内のテキストを取得できます。順番に
index は一致する文字列の最初の位置を表します
input は取得される文字列を表します
正規表現にグローバルフラグ「g」が付いているかどうかに関係なく、exec の動作は同じですが、正規表現オブジェクトの動作がどのように変化するかについて詳しく説明します。違う
regにグローバルマーク「g」が含まれている場合、reg.lastIndex属性は元の文字列内で一致した文字列の末尾以降の位置、つまり次の一致が開始される位置を表します。 == array.index (開始位置と一致) + array[0].length (文字列の長さと一致) 以下のように:
リーリー取得が続くと、array.index の値が増加します。つまり、reg.lastIndex の値も同期的に増加します。したがって、exec メソッドを繰り返し呼び出すことで、文字列内のすべての一致を調べることもできます。テキスト。exec メソッドがテキストと一致しなくなると、null が返され、reg.lastIndex プロパティが 0 にリセットされます。
以下に示すように、上記の例に従って、上記が正しいかどうかを確認するためにコードの実行を続けます。 リーリー上記のコードでは、exec メソッドが繰り返し呼び出されると、reg.lastIndex プロパティは最終的に 0 にリセットされます。
問題のレビュー
リーリー
上記のコードの正しい実行結果は「123456」であるため、2回目のexecメソッドを実行する前に「reg.lastIndex = 0;」を追加することをお勧めします。regにグローバルフラグ「g」が含まれていない場合、execメソッドの実行結果(配列)はstring.match(reg)メソッドの実行結果と全く同じになります。
このスニペットは、正規表現フロントエンド ユーザー マニュアル | louis blog から引用しています。役に立った場合は、「いいね!」をお願いします。