禁用不必要的转义字符:\ / no-useless-escape

时间:2017-11-14 03:21:20

标签: regex reactjs eslint

我有我的这个正则表达式,如果它包含链接或网址(i.e. https://eslint.org/docs/rules/no-useless-escape),它将检查字符串。使用此正则表达式/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig,我在遇到Unnecessary escape character: \/ no-useless-escape的反应时运行我的测试用例时遇到并出错。如何禁用此eslint-error以便我继续我的测试用例并使用正则表达式。

感谢任何帮助!

6 个答案:

答案 0 :(得分:11)

\/[-A-Z0-9+&@#\/%?=~_|!:,.;]中的[-A-Z0-9+&@#\/%=~_|](不是:\/\/中的/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#/%?=~_|!:,.;]*[-A-Z0-9+&@#/%=~_|])/ig)。大多数字符不必在字符类(方括号)内进行转义。这应该是等价的:G(a,b)所以 有关详细信息,请参阅https://www.regular-expressions.info/charclass.html,但相关部分:

  

在大多数正则表达式中,唯一的特殊字符或元字符   在一个字符类里面是结束括号],反斜杠\,   插入符号^和连字符 - 。通常的元字符是正常的   字符类中的字符,不需要转义   反斜杠。要搜索星号或加号,请使用[+ *]。你的正则表达式会   如果您转义角色内的常规元字符,则可以正常工作   类,但这样做会大大降低可读性。

答案 1 :(得分:3)

//eslint-disable-next-line

将其放置在代码行上方

OR

/*eslint no-undef: 0*/

将其放置在文件的第一行(或script标签的第一行) 这将使eslint在整个文件上都被禁用

答案 2 :(得分:3)

你也可以使用

/* eslint-disable no-useless-escape */

禁用整个脚本文件的规则。

答案 3 :(得分:1)

您可以使用ESLint并尝试将此注释listA, listB, listC = [dedup(x) for x in [listA, listB, listC]] 添加到行中以禁用警告。

答案 4 :(得分:1)

\在我的NodeJS typescript项目中从下面的代码给出错误,代码编辑器是VS Code-

代码-

if (!(/^[\-0-9a-zA-Z\.\+_]+@[\-0-9a-zA-Z\.\+_]+\.[a-zA-Z]{2,}$/).test(String(req.body.email))) { ... }

错误-

Unnecessary escape character: \+. (eslintno-useless-escape)

解决方案-

//eslint-disable-next-line

最终代码-

//eslint-disable-next-line
if (!(/^[\-0-9a-zA-Z\.\+_]+@[\-0-9a-zA-Z\.\+_]+\.[a-zA-Z]{2,}$/).test(String(req.body.email))) { ... }

答案 5 :(得分:1)

我在 React 中也有类似的警告。

<块引用>

Unnecessary escape character: \# no-useless-escape

只需删除警告中提到的任何内容。就我而言,警告中有 \#,因此我只是将其从警告中提到的行中删除。