eslint/no-useless-backreference 正确性
它做了什么
禁止在正则表达式中使用那些在评估时永远会被忽略的反向引用,因为其所指向的捕获组尚未匹配且无法匹配。
为什么这是个问题?
无用的反向引用可能导致令人困惑或误导性的正则表达式。它们可能会让人误以为某个分组的值被重复使用了,但由于模式结构(例如评估顺序、选择项或负向先行断言)的原因,该分组实际上并未匹配任何内容——因此引用始终解析为空字符串。这种情况几乎总是错误的,会使正则表达式更难理解与维护。
示例
此规则的 错误 代码示例:
js
/\1(a)/; // 反向引用出现在分组之前
/(a|\1b)/; // 分组与引用位于不同的可选分支中
/(?<=\1(a))b/; // 反向引用在回顾型断言中使用于分组之前
/\1(?!(a))/; // 分组位于负向前瞻中
/(a\1)/; // 反向引用在其自身分组内部此规则的 正确 代码示例:
js
/(a)\1/; // 合法 —— 反向引用跟在已完成的分组之后
/(?<name>a)\k<name>/; // 命名分组使用得当
/(?:a|(b))\1/; // 只有在分组匹配时才使用反向引用如何使用
通过配置文件或 CLI 启用 此规则,可以使用:
json
{
"rules": {
"no-useless-backreference": "error"
}
}bash
oxlint --deny no-useless-backreference