字符类中的重复字符¶
ID: js/regex/duplicate-in-character-class
Kind: problem
Security severity:
Severity: warning
Precision: very-high
Tags:
- reliability
- correctness
- regular-expressions
Query suites:
- javascript-security-and-quality.qls
正则表达式中的字符类表示字符集,因此无需在一个字符类中两次指定相同的字符。字符类中的重复字符充其量是无用的,甚至可能表明存在潜在的错误。
建议¶
如果字符是意外重复的,请将其删除。如果字符类意在成为一个组,请用括号替换方括号。
示例¶
在以下示例中,字符类
包含字符[password|pwd]
、d
、p
和s
的两个实例。程序员很可能打算编写w
(与字符串(password|pwd)
或字符串"password"
匹配的模式),但意外地错键了封闭的方括号。"pwd"
if (/[password|pwd] =/.test(input))
console.log("Found password!");
要解决此问题,应将正则表达式改写为
。/(password|pwd) =/
参考¶
Mozilla 开发者网络:JavaScript 正则表达式.