CodeQL 文档

字符类中的重复字符

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

单击查看 CodeQL 存储库中的查询

正则表达式中的字符类表示字符集,因此无需在一个字符类中两次指定相同的字符。字符类中的重复字符充其量是无用的,甚至可能表明存在潜在的错误。

建议

如果字符是意外重复的,请将其删除。如果字符类意在成为一个组,请用括号替换方括号。

示例

在以下示例中,字符类[password|pwd] 包含字符dpsw 的两个实例。程序员很可能打算编写(password|pwd)(与字符串"password" 或字符串"pwd" 匹配的模式),但意外地错键了封闭的方括号。

if (/[password|pwd] =/.test(input))
	console.log("Found password!");

要解决此问题,应将正则表达式改写为/(password|pwd) =/

参考

  • ©GitHub, Inc.
  • 条款
  • 隐私