ESlint:如何忽略解析错误:无效的正则表达式标志

leg*_*ogo 6 javascript regex google-chrome google-chrome-extension eslint

我正在创建一个 Chrome 扩展程序。我想编写一个匹配字符串的代码,包括\n如下所示:

var s = "a\nb";
console.log(s.match(/a.*b/s)); // prints non-null
Run Code Online (Sandbox Code Playgroud)

我使用该s标志是因为它可以在 Chrome 67.0.3396.99 上运行。然而,这个标志没有在标准 Javascript 中定义,所以 ESlint 说

2:22  error  Parsing error: Invalid regular expression flag
Run Code Online (Sandbox Code Playgroud)

有什么办法可以忽略这一点吗?我// eslint-disable-line no-invalid-regexp在我的代码中尝试过

"no-invalid-regexp": ["error", { "allowConstructorFlags": ["s"] }],
Run Code Online (Sandbox Code Playgroud)

在我的 .eslintrc.json 中,但两者都不起作用(似乎它仅适用于RegExp构造函数而不适用于正则//表达式)。

我尝试过// eslint-disable-line/* eslint-disable */但也没成功。

ESlint 文档中,

注意:禁用文件部分警告的注释告诉 ESLint 不要报告禁用代码的规则违规行为。然而,ESLint 仍然解析整个文件,因此禁用的代码仍然需要是语法上有效的 JavaScript。

所以这个s标志被认为是无效的Javascript。难道真的无法忽略这个错误吗?或者这可以被插件或其他东西忽略吗?

小智 4

根据代码的结构方式,您可能只需编写备用正则表达式,例如:

console.log(s.match(/a[.\s]*b/));
Run Code Online (Sandbox Code Playgroud)

这将匹配“a”,后跟一个或多个与点或空格字符匹配的字符,后跟“b”。

这将完全消除警告,因为您将不再使用 's' 标志。

另一方面,“s”标志似乎是EcmaScript 2018 功能,因此在启动 eslint 时可能只需传递带有值“2018”的参数ecmaVersion即可。