我正在创建一个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 */
,但都没有用。
注意:禁用文件部分警告的注释告诉ESLint不要报告禁用代码的规则违例。 ESLint仍会解析整个文件,因此,禁用的代码仍然必须是语法上有效的JavaScript。
因此,此s
标志被视为无效的Javascript。 真的不可能忽略此错误吗?还是可以被插件或其他东西忽略?
答案 0 :(得分:2)
根据代码的结构,您可能只需要编写备用正则表达式,例如:
console.log(s.match(/a[.\s]*b/));
这将匹配一个'a',然后是一个或多个由点号或空格字符匹配的字符,然后是'b'。
这将完全消除警告,因为您将不再使用's'标志。
另一方面,'s'标志似乎是EcmaScript 2018 feature,因此在启动eslint时可以简单地将参数ecmaVersion传递给值'2018'。