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即可。
| 归档时间: |
|
| 查看次数: |
5771 次 |
| 最近记录: |