正则表达式中的不可匹配美元符¶
ID: js/regex/unmatchable-dollar
Kind: problem
Security severity:
Severity: error
Precision: very-high
Tags:
- reliability
- correctness
- regular-expressions
- external/cwe/cwe-561
Query suites:
- javascript-security-and-quality.qls
正则表达式中的美元符号 $
仅匹配输入的结尾,或者(对于多行正则表达式)匹配行的结尾。如果它后面跟着必须匹配非空(非换行符)输入字符序列的模式,则它不可能匹配,从而导致整个正则表达式不可匹配。
建议¶
检查正则表达式,找到并更正任何错别字。
示例¶
在以下示例中,正则表达式 /\.\(\w+$\)/
无法匹配任何字符串,因为它包含一个美元断言,后面跟着一个匹配右括号的转义序列。
if (file.match(/\.\(\w+$\)/))
console.log("Found it.");
参考资料¶
Mozilla 开发者网络:JavaScript 正则表达式.
常见弱点枚举:CWE-561.