なぜ上は fasle で、下は true
JavaScript lastIndex プロパティ JavaScript RegExp オブジェクト 定義と使用法 lastIndex プロパティは、次の一致の開始位置を指定するために使用されます。 構文RegExpObject.lastIndex説明 この属性は、最後に一致したテキストの後の最初の文字の位置を宣言する整数を格納します。 最後に一致した結果は、RegExp.exec() メソッドと RegExp.test() メソッドによって検出されます。どちらのメソッドも、lastIndex 属性によって示された位置を次の取得の開始点として使用します。このように、これら 2 つのメソッドを繰り返し呼び出すことで、文字列内の一致するすべてのテキストを反復処理できます。 このプロパティは読み取りおよび書き込み可能です。次回のターゲット文字列の検索が開始されるたびに設定できます。 exec() または test() メソッドが一致するテキストを見つけられなくなると、lastIndex プロパティが自動的に 0 にリセットされます。 ヒントと注意事項重要: g フラグがなく、グローバル モードを表さない RegExp オブジェクトは、lastIndex プロパティを使用できません。 ヒント: 特定の文字列との一致に成功した後、別の新しい文字列の取得を開始する場合は、このプロパティを手動で 0 に設定する必要があります。
ここでご覧ください、http://www.dewen.net.cn/q/468/グローバル一致マーク g が正規表現で使用されているため、正規表現は成功した一致位置 lastIndex を記録します。この位置から一致を続けます。 そのため、2回目にマッチングするときは、前の猫を見る必要はなく、gを削除するだけです。
以下の抜粋は http://www.w3school.com.cn/js... からのものです。
JavaScript lastIndex プロパティ
JavaScript RegExp オブジェクト
定義と使用法
lastIndex プロパティは、次の一致の開始位置を指定するために使用されます。
構文
RegExpObject.lastIndex
説明
この属性は、最後に一致したテキストの後の最初の文字の位置を宣言する整数を格納します。
最後に一致した結果は、RegExp.exec() メソッドと RegExp.test() メソッドによって検出されます。どちらのメソッドも、lastIndex 属性によって示された位置を次の取得の開始点として使用します。このように、これら 2 つのメソッドを繰り返し呼び出すことで、文字列内の一致するすべてのテキストを反復処理できます。
このプロパティは読み取りおよび書き込み可能です。次回のターゲット文字列の検索が開始されるたびに設定できます。 exec() または test() メソッドが一致するテキストを見つけられなくなると、lastIndex プロパティが自動的に 0 にリセットされます。
ヒントと注意事項
重要: g フラグがなく、グローバル モードを表さない RegExp オブジェクトは、lastIndex プロパティを使用できません。
ヒント: 特定の文字列との一致に成功した後、別の新しい文字列の取得を開始する場合は、このプロパティを手動で 0 に設定する必要があります。
ここでご覧ください、http://www.dewen.net.cn/q/468/
グローバル一致マーク g が正規表現で使用されているため、正規表現は成功した一致位置 lastIndex を記録します。この位置から一致を続けます。
そのため、2回目にマッチングするときは、前の猫を見る必要はなく、gを削除するだけです。