首页 > 解决方案 > ESlint:如何忽略解析错误:无效的正则表达式标志

问题描述

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

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

我使用了这个s标志,因为它适用于 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构造函数而不适用于正则//表达式)。

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

ESlint 文档中,

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

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

标签: javascriptregexgoogle-chromegoogle-chrome-extensioneslint

解决方案


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

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

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

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

另一方面,'s' 标志似乎是EcmaScript 2018 的一个特性,所以在启动 eslint 时可能只是简单地传递参数ecmaVersion和值 '2018'。


推荐阅读