首页 > 解决方案 > 正则表达式匹配两个元素或不匹配

问题描述

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

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

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

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

标签: javascriptregexnumbersmatchparentheses

解决方案


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

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

演示


推荐阅读