正则表达式匹配两个元素或无

问题描述

我一直在尝试使用正则表达式来匹配括号中的数字,例如:

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

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

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

解决方法

只需使用两种不同的表达方式作为替代。第一个使用否定环顾来匹配周围没有括号的 3 个数字,第二个匹配由括号包围的 3 个数字。

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

DEMO

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...