【问题标题】:Regex to match two elements or none正则表达式匹配两个元素或不匹配
【发布时间】:2021-06-16 05:54:52
【问题描述】:

我一直在尝试获取一个允许我匹配括号中的数字的正则表达式,例如:

^([^02-9])?(\s)?((\(?)[0-9]{3}(\3\)?))(\s|\-)?[0-9]{3}(\s|\-)?[0-9]{4}$

这是我尝试使用的表达式,但是当只有一个括号时它也有效,这对我不起作用。有什么办法可以做到吗?

我的表达式应该适用于存在“(123)”且仅存在“123”的情况,但不适用于“(123”或“123)”

【问题讨论】:

  • 反向引用\3 应该指的是什么?在此之前您只有 2 个捕获组。
  • 我之前没有上传完整的正则表达式,抱歉,这里是:^([^02-9])?(\s)?((\(?)[0-9]{3}(\3\)?))(\s|\-)?[0-9]{3}(\s|\-)?[0-9]{4}$
  • 你能澄清一下[^02-9]应该匹配什么吗?

标签: javascript regex numbers match parentheses


【解决方案1】:

只需使用两种不同的表达方式作为替代。第一个使用否定环视来匹配 3 个不带括号的数字,第二个匹配用括号括起来的 3 个数字。

(?<!\()\d{3}(?!\))|\(\d{3}\)

DEMO

【讨论】:

  • 在这种情况下,您可以选择将此解决方案标记为已接受
猜你喜欢
  • 1970-01-01
  • 2014-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多