空字符类¶
ID: js/regex/empty-character-class
Kind: problem
Security severity:
Severity: warning
Precision: very-high
Tags:
- reliability
- correctness
- regular-expressions
Query suites:
- javascript-security-and-quality.qls
正则表达式中的空字符类不匹配任何内容,可能表明代码缺失。
建议¶
省略空字符类。如果整个正则表达式将变为空,请使用`/(?:)/` 来表示一个故意为空的正则表达式。
示例¶
在下面的示例中,程序员可能想要编写一个匹配左方括号或左大括号,后跟一个或多个字母或数字,最后是右方括号或右大括号的正则表达式。但是,他们忘记用反斜杠转义右方括号,导致出现空字符类。生成的正则表达式格式错误,可能在不同的平台上被解释为不同的含义。
if (!/[[{]\w+[]}]/.test(input))
console.log("Malformed input.");
要解决此问题,应将正则表达式重写为`/[\[{]\w+[\]}]/`。
参考¶
Mozilla 开发者网络: JavaScript 正则表达式.