禁用不必要的转义字符:\+

Disable Unnecessary escape character: \+

我有这个正则表达式可以验证 phone 号码(即 +1 (417) 230-0718)。使用此正则表达式 /^[\+]?[(]?[0-9]{3}[)]?[-\s\.]?[0-9]{3}[-\s\.]?[0-9]{4,6}$/im,我在 运行 下一个关于不必要的转义字符的测试用例中遇到了错误:+。如何禁用此 eslint-error 以便我继续我的测试用例并使用正则表达式。

感谢您的帮助!

这是解决这个问题的正确方法。

/^[+]?[(]?[0-9]{3}[)]?[-\s.]?[0-9]{3}[-\s.]?[0-9]{4,6}$/im

您的示例 phone 数字与您的原始正则表达式不匹配,并且包含多个不必要的转义。

首先回答你最初的问题:在 [] 部分,你不需要转义字符 - 唯一具有特殊含义的字符是 ^,而且它也只有作为 [] 中的第一个字符具有特殊含义,因此您可以将其放得更远。此外,您不需要 [] 只有一个字符 - 那么转义版本更好。

在您的正则表达式旁边与您的示例 phone 号码不匹配: 您在开头的 + 号后缺少国际前缀。

我会将您的正则表达式重写为以下内容:

/^(?:\+\d{1,3}[-\s.]?)?\(?[0-9]{3}\)?[-\s.]?[0-9]{3}[-\s.]?[0-9]{4,6}$/m

您不需要 i 标志,因为没有 upper/lower 大小写数字。

此更新后的正则表达式允许可选的 1 到 3 位国际前缀,但必须以 +

开头