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

时间:2018-08-20 17:51:31

标签: javascript regex google-chrome google-chrome-extension eslint

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

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

我使用了s flag,因为它可以在Chrome 67.0.3396.99上使用。但是,该标记未在标准Javascript中定义,因此ESlint说

2:22  error  Parsing error: Invalid regular expression flag

有什么办法可以忽略吗?我在代码中尝试了// eslint-disable-line no-invalid-regexp,并且

"no-invalid-regexp": ["error", { "allowConstructorFlags": ["s"] }],

在我的.eslintrc.json中,但都没有起作用(看来它仅适用于RegExp构造函数,不适用于// regexp)。

我尝试了// eslint-disable-line/* eslint-disable */,但都没有用。

The ESlint document中,

  

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

因此,此s标志被视为无效的Javascript。 真的不可能忽略此错误吗?还是可以被插件或其他东西忽略?

1 个答案:

答案 0 :(得分:2)

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

console.log(s.match(/a[.\s]*b/));

这将匹配一个'a',然后是一个或多个由点号或空格字符匹配的字符,然后是'b'。

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

另一方面,'s'标志似乎是EcmaScript 2018 feature,因此在启动eslint时可以简单地将参数ecmaVersion传递给值'2018'。