反向引用在捕获组之前¶
ID: js/regex/back-reference-before-group
Kind: problem
Security severity:
Severity: error
Precision: very-high
Tags:
- reliability
- correctness
- regular-expressions
Query suites:
- javascript-security-and-quality.qls
反向引用可用于引用先前匹配的捕获组的结果。在语法上,引用尚未完成匹配的捕获组是合法的,但此类反向引用始终匹配空字符串,没有太大用处。
建议¶
如果反向引用没有用,请将其删除,或者将其更新为引用正确的捕获组。
示例¶
在以下示例中,反向引用 \2
出现在它引用的捕获组 (.*)
之前。(请注意,第一个组是非捕获组。)
if (/(?:start|end)(\[*|\{*)abc\2:(.*)/.test(input))
console.log("Found the pattern.");
如果正则表达式更新不一致,可能会出现这种正向引用。例如,在该示例中,第一个组最初可能是捕获组,因此反向引用引用了组 (\[*|\{*])
。但是,现在此组是第一个捕获组,因此应将反向引用更新为 \1
。
参考¶
Mozilla 开发者网络:JavaScript 正则表达式。