【问题标题】:Disable Unnecessary escape character: \/ no-useless-escape禁用不必要的转义字符:\/ no-useless-escape
【发布时间】:2018-04-26 21:23:06
【问题描述】:

我有我的这个正则表达式,它会检查字符串是否包含链接或 URL (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 以便我继续我的测试用例并使用正则表达式。

感谢您的帮助!

【问题讨论】:

    标签: regex reactjs eslint


    【解决方案1】:

    您可以使用ESLint 并尝试添加以下任一内容:-

    1. //eslint-disable-line 在线禁用警告。
    2. //eslint-disable-next-line 前行以禁用警告。

    参见 ESLint 的文档,Disabling Rules with Inline Comments

    要禁用特定行上的所有规则,请使用以下格式之一的行或块注释:

    alert('foo'); // eslint-disable-line
    
    // eslint-disable-next-line
    alert('foo');
    
    /* eslint-disable-next-line */
    alert('foo');
    
    alert('foo'); /* eslint-disable-line */
    

    您可以通过在文件顶部添加/* eslint-disable */ 来禁用整个文件中的警告。

    要在整个文件中禁用规则警告,请在文件顶部添加 /* eslint-disable */ 块注释:

    /* eslint-disable */
       alert('foo');
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 如何禁用它?
      • 如果您使用create-react-app,您可能无法不弹出,但这是一个有效的警告,因此“禁用”它的最简单方法是修复它。 ;-)
      • 作为记录,您实际上可以使用 Abhinav Kinagi 的答案中的特殊 ESLint cmets 在 React 中覆盖这些。
      【解决方案3】:
      //eslint-disable-next-line
      

      将其放在代码行上方

      /*eslint no-undef: 0*/
      

      把它放在文件的第一行(或脚本标签的第一行) 这将使 eslint 在整个文件上被禁用

      【讨论】:

        【解决方案4】:

        你也可以使用

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

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

        【讨论】:

          【解决方案5】:

          \ 在我的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))) { ... }
          

          【讨论】:

            【解决方案6】:

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

            Unnecessary escape character: \# no-useless-escape

            只需删除警告中提到的任何内容即可。就我而言,我在警告中有\#,所以我只是从警告中提到的行中删除了它。

            【讨论】:

              猜你喜欢
              • 2019-08-20
              • 1970-01-01
              • 1970-01-01
              • 2011-02-22
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-05-20
              • 2019-06-22
              相关资源
              最近更新 更多