查找正则表达式



我正在尝试找到一个正则表达式来匹配具有 4 个重复数字和介于两者之间的可选连字符的字符串,例如:

-3-3-3-3--
1111-2222-0-0-00

目前我有:

-?(d(-*))1{3}-?

它与前两个匹配,但与后两个不匹配。有什么建议吗?

您可以使用

^-?(d)(?:-?1){3}-?$

请参阅正则表达式演示。若要在较大的字符串中查找模式,请删除^$锚点:

-?(d)(?:-?1){3}-?

如果模式是较长模式的一部分,则可能必须调整反向引用编号(如果模式中有其他捕获组(。

  • ^- 字符串的开头
  • -?- 可选-
  • (d)- 第 1 组:任意数字
  • (?:-?1){3}- 可选-出现三次,然后出现与组 1 中捕获的值相同的值
  • -?- 可选连字符
  • $- 字符串的结尾。

最新更新