【问题标题】:Getting an ESLint: Unnecessary escape character获取 ESLint:不必要的转义字符
【发布时间】:2019-11-04 22:02:14
【问题描述】:

我正在尝试验证文本字段,但是我收到以下正则表达式的错误。

if (!/^[a-zA-Z0-9\\\/\*+;&%?#@!^()_="\-:~`|[\]\{\}\s]*$/i.test(e.target.value)) {
   this.setState({
      newFamilyName: e.target.value,
   });
}

我需要在正则表达式中添加更多字符吗?

【问题讨论】:

  • 我的意思是......如果转义字符是“不必要的”,那不是表示删除字符而不是添加字符吗?
  • 我已经编辑了我的答案并进行了修复。如果有帮助,您可以将其标记为已解决。

标签: javascript regex reactjs


【解决方案1】:

你有一些不必要的转义字符: \/\*\{\}

你可以修复它:

if (!/^[a-zA-Z0-9\\/*+;&%?#@!^()_="\-:~`|[\]{}\s]*$/i.test(e.target.value)) {
   this.setState({
      newFamilyName: e.target.value,
   });
}

禁用规则:

//eslint-disable-next-line
if (!/^[a-zA-Z0-9\\\/\*+;&%?#@!^()_="\-:~`|[\]\{\}\s]*$/i.test(e.target.value)) {
   this.setState({
      newFamilyName: e.target.value,
   });
}

【讨论】:

  • 是的,我该如何修正这条规则?
  • @tejasreevangapalli 刚刚用固定的正则表达式编辑了我的答案
【解决方案2】:

不必要的转义字符意味着您在正则表达式中的字符前面有一个\,而您实际上并不需要。

我将您发布的代码插入https://eslint.org/demo 并得到:

1:20 - 不必要的转义字符:\/。 (无用逃脱)
1:22 - 不必要的转义字符:\*。 (无用逃脱)
1:47 - 不必要的转义字符:\{。 (无用逃脱)
1:49 - 不必要的转义字符:\}。 (无用逃逸)

这意味着您不需要在正则表达式中的 /*{} 前面添加 \。这些字符不需要转义,因为它们出现在 [] 组中。

不幸的是,eslint 演示网站上的“固定代码”的东西不起作用,但下面的代码是你将如何修复它的方法

if (!/^[a-zA-Z0-9\\/*+;&%?#@!^()_="\-:~`|[\]{}\s]*$/i.test(e.target.value)) {
   this.setState({
      newFamilyName: e.target.value,
   });
}

【讨论】:

  • 我同时回答,也得到了反对票。谁知道...
  • 我不知道为什么投反对票。我的问题也遭到了反对。
猜你喜欢
  • 1970-01-01
  • 2019-08-20
  • 2018-04-26
  • 1970-01-01
  • 2019-06-22
  • 1970-01-01
  • 2012-07-08
  • 1970-01-01
  • 2011-03-07
相关资源
最近更新 更多