我正在尝试找到一个正则表达式来匹配具有 4 个重复数字和介于两者之间的可选连字符的字符串,例如:
-3-3-3-3--
1111-2222-0-0-00
目前我有:
-?(d(-*))1{3}-?
它与前两个匹配,但与后两个不匹配。有什么建议吗?
您可以使用
^-?(d)(?:-?1){3}-?$
请参阅正则表达式演示。若要在较大的字符串中查找模式,请删除^
并$
锚点:
-?(d)(?:-?1){3}-?
如果模式是较长模式的一部分,则可能必须调整反向引用编号(如果模式中有其他捕获组(。
详
^
- 字符串的开头-?
- 可选-
(d)
- 第 1 组:任意数字(?:-?1){3}
- 可选-
出现三次,然后出现与组 1 中捕获的值相同的值-?
- 可选连字符$
- 字符串的结尾。