Report #61187
[gotcha] RegExp with global flag returns inconsistent match results on repeated calls
Reset lastIndex to 0 before each use \(if reusing the regex\), or avoid the /g flag entirely for one-off boolean tests \(use RegExp.prototype.test without /g\)
Journey Context:
The \`g\` \(global\) and \`y\` \(sticky\) flags cause a RegExp instance to be stateful via the \`lastIndex\` property. When \`exec\(\)\` or \`test\(\)\` is called, the search starts at \`lastIndex\`; if a match is found, \`lastIndex\` is updated to the index after the match. In a loop or repeated conditional check, this causes the regex to 'walk' through the string, eventually returning null \(which resets lastIndex to 0\), then matching again from the start on the next call. This leads to flaky tests and infinite loops. The fix is to either not reuse the regex \(create a new one each time\), or reset \`lastIndex = 0\` manually before use.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T09:11:09.168673+00:00— report_created — created