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

问题描述 投票:0回答:4

我的 ESlint 抛出错误

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

如果我从正则表达式中删除

\b
,则不会引发错误。为什么会发生这种情况?我怎样才能消除错误?

javascript regex
4个回答
34
投票

规则 no-control-regex 已启用。

当您从

eslint:recommended

继承规则时,默认启用此规则
"extends": "eslint:recommended"

默认启用的原因:

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

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

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

5
投票

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]+$");

0
投票

Never use this My Deployment failed because of this in Production

@Boy.Lee


-2
投票

我遇到了同样的问题,使用

\\n
替换
\n
就这样了。

© www.soinside.com 2019 - 2024. All rights reserved.