创建regex以匹配00:00:00的持续时间(而不是时间)格式


create regex to match format of 00:00:00 for duration (not time)

嗨,我正在使用laravel,我想验证创建一个正则表达式,它将允许特定的持续时间格式(而不是时间,因为这可能超过24小时格式)。因此例如124小时30分钟24秒将表示如下124:30:24。但是,第一个值可以超过1个字符和一个数字,第二个值需要是冒号,第三个值需要为2个字符和数字,第四个值必须是冒号,而第五个值必须为2个字母和数字。

有什么想法可以创建一个正则表达式来插入到下面的数组中吗?

$rules = array(
  'duration'          => 'required|regex:/^(?=.*[a-z])(?=.*[A-Z])(?=.*'d).+$/'
);

无效示例:

alphacharacters e.g. qwerty
0:0:0
0:
0
1
30:211:211
30:2111:2111
a:d:d
asd

有效的例子:

01:00:00
1:00:00
30:21:21
330:21:21
1330:21:21
11330:21:21
basically any amount of hours.

举个例子,这个正则表达式就足够了:

^'d+:'d{2}:'d{2}$

演示:https://regex101.com/r/kO4xN2/2

'd是一个数字
+是一个量词,表示前面的一个或多个字符(或组)
{}是允许的字符数(您也可以给它一个范围)
^$是锚点,因此字符串必须完全匹配,如果字符串中有更多内容,则应将其删除。