javascript - 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。真的不能忽略这个错误吗?或者这可以被插件或其他东西忽略吗?
解决方案
根据您的代码的结构,您可能只需编写备用正则表达式,例如:
console.log(s.match(/a[.\s]*b/));
这将匹配一个“a”,后跟一个或多个由点匹配的字符或一个空格字符,然后是一个“b”。
这将完全消除警告,因为您将不再使用 's' 标志。
另一方面,'s' 标志似乎是EcmaScript 2018 的一个特性,所以在启动 eslint 时可能只是简单地传递参数ecmaVersion和值 '2018'。
推荐阅读
- javascript - mapbox GL JS 中的 GeoJson 不会通过 URL 接受它,格式似乎很好
- python - 使用python从工件下载.xml文件时下载损坏的xml
- android - 拍照并将其保存在 Android 的内部存储中
- javascript - (JavaScript) 获取数组中交替值的总和并从中获取最大值
- javascript - 为什么 JS 编译器不能识别对 Array.prototype.filter 的调用
- c++ - 具有可变非类型参数的模板特化
- javascript - 在 HTML 画布中单独旋转平铺图像
- powerbi - 将 Azure 时序见解数据导入 Power BI
- regex - 正则表达式捕获开始词之间的所有内容,直到结束特定的结束词
- node.js - 如何使用nodejs向android chrome浏览器发送通知?