1. ホーム
  2. javascript

[解決済み] なぜ私のJavaScript regex.test()は交互に結果を出すのか [duplicate].

2023-03-12 09:14:52

質問

重複の可能性があります。

Javascript の正規表現で、true... → false... → true... 等を返します。

var r = /\d/g;
var a = r.test("1"); // will be true
var b = r.test("1"); // will be false
console.log(a == b); // will be false

の結果がなぜ r.test("1") の結果が呼び出しごとに交互になるのはなぜですか?

g モディファイアを削除することで、私が抱えていた問題を回避することができました。しかし、私はまだこれが起こる理由を理解したいと思います。

どのように解決するのですか?

を使用している場合 /g を使用している場合、regex オブジェクトは呼び出しの間の状態を保存します (複数の呼び出しに渡ってマッチするように使用する必要があるためです)。これは一度だけマッチしますが、それ以降の呼び出しは最初のマッチの後から開始されます。

(これは Javascriptの正規表現で、true...→false...→true...などを返します。 )