RegExp - 如何检查字符串中的两个括号

时间:2018-02-10 12:24:35

标签: javascript regex

我想知道如果有两个括号(开始和结束),我怎么才能匹配文字。

目前,我的RegExp是:^1?\s?\(?\d{3}\)?[-\s]?\d{3}[-\s]?\d{4}$

它会检查美国有效数字,但\(?\)?会产生差异。如果文本中有0或2,则应与文本匹配。

一些测试:

1 555)555-5555 - false

555)-555-5555 - false

(555-555-5555 - false

现在,他们都返回相同的结果 - true

以下是指向它的链接: https://regexr.com/3kjei^是因为我必须只选择一个没有任何换行符的字符串,请从中删除2个其他字符串,这样你就可以看到它返回true。此链接中的所有字符串都应该返回< strong> true ,只需检查它,因此文本编辑器中只有一个字符串。)

谢谢

2 个答案:

答案 0 :(得分:1)

您可以使用

^(?:1\s?)?(?:\(\d{3}\)|\d{3})[-\s]?\d{3}[-\s]?\d{4}$

请参阅regex demo

请注意,正则表达式中的^1?\s?在开头允许一个空格,这就是我建议^(?:1\s?)? - 一个以1开头的可选序列,可选地跟随空格。< / p>

\(?\d{3}\)?部分已替换为(?:\(\d{3}\)|\d{3}) - non-capturing group,其匹配( + 3位+ )或3位数(因此,不是{{} 1}}或123)`可以匹配)。

<强>详情

  • (123 - 字符串开头
  • ^ - (?:1\s?)?出现1次或0次,可选地后跟1个空白字符
  • 1 - (?:\(\d{3}\)|\d{3}),3位数,(或仅3位
  • ) - 可选的[-\s]?或空白
  • - - 3位数
  • \d{3} - 可选的[-\s]?或空白
  • - - 4位数
  • \d{4} - 字符串结束。

答案 1 :(得分:1)

为什么不在你的正则表达式中\(?\d{3}\)?表示你&#34;或&#34;相反。 例如。替换为这样的东西:

((\(\d{3}\))|\d{3})