Javascript 正则表达式中的意外控制字符

新手上路,请多包涵

我的 ESlint 为我的正则表达式抛出错误 Unexpected control character(s) in regular expression: \x08 no-control-regex let regex = new RegExp("^[0-9a-zA-Z \b]+$");

如果我从我的正则表达式中删除 \b 则不会引发错误。为什么会这样?我怎样才能消除错误?

原文由 Noushad 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
2 个回答

no-control-regex 规则开启。

当您从 eslint:recommended 继承规则时,默认情况下启用此规则

"extends": "eslint:recommended"

默认启用的原因:

控制字符是 ASCII 范围 0-31 中的特殊、不可见字符。这些字符很少用于 JavaScript 字符串中,因此包含这些字符的正则表达式很可能是错误的。

要禁用此规则,请添加您的 eslint 配置

"rules": {
  "no-control-regex": 0
}

原文由 BrunoLM 发布,翻译遵循 CC BY-SA 3.0 许可协议

ESLint 抛出错误的原因:

  1. Lint 规则 no-control-regex 已打开。
  2. 字符串中的表达式未正确转义,因此包含控制字符。请参见以下代码:
 // This prints: ^[0-9a-zA-Z]+$
// Notice that the space character and \b is missing
console.log("^[0-9a-zA-Z \b]+$")

修复错误的正确方法是正确转义字符串。

 let regex = new RegExp("^[0-9a-zA-Z \\b]+$");

原文由 VCD 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题