我有两个字符串:
(123)4567890
1234567890
(
和)
对必须同时出现,或两者都省略。目前我使用这个正则表达式:
(?:(?:\(\d{3}\))|(?:\d{3}))\d{7}
使用OR
来匹配以下两种情况之一:
\(\d{3}\)
\d{3}
只是好奇,如何在当前比赛中检查最后一场比赛(是否(
)(检查)
)?
你能建议我另一种方法来达到同样的效果吗?
答案 0 :(得分:6)
您可以使用conditional construct:捕获可选的开头(
,然后匹配3位数,然后检查组1是否为空,如果不是,则匹配结束)
:
(\()?\d{3}(?(1)\))\d{7}
请参阅regex demo。根据要求添加锚点/边界。
<强>详情
(\()?
- 与(
字符\d{3}
- 3位数(?(1)\))
- 如果第1组匹配,则匹配)
\d{7}
- 7位数。