重复模式中的必需字符仅在字符串的末尾处可选

时间:2016-08-09 04:49:32

标签: php regex

我有这个正则表达式匹配重复模式:

/([0-9]{1,2}:[0-9]{1,2};)+/

它会匹配以下字符串:9:9;(1组数字)或12:2;4:9;(2组数字)或5:2;7:7;5:2;(3组数字),依此类推。

到目前为止一切顺利,但是我需要分号来分隔每一组,而如果它在行的末尾则是可选的。所以我需要它接受这两个:5:2;7:7;5:2;和这个:5:2;7:7;5:2。这:9:9;和此:9:9

如何实现这一目标?

2 个答案:

答案 0 :(得分:1)

您可以使用(;|$),因此结尾;是可选的

/([0-9]{1,2}:[0-9]{1,2}(;|$))+/

为避免捕获;,您可以使用(?:;|$)
?:non-capturing group

答案 1 :(得分:1)

你可以去:

^(\d{1,2}:\d{1,2};?)+$

请参阅a demo on regex101.com \d匹配0-9;?匹配分号,如果它在那里^$是一行的锚点。< / p>