001*_*221 5 php regex duration laravel
嗨,我正在使用laravel,我想验证创建一个正则表达式,允许持续时间的特定格式(而不是时间,因为这可以超过24小时格式).因此,例如124小时30分钟和24秒将表示如下124:30:24.但第一个值可以是超过1个字符和一个数字,第二个值需要是冒号,第三个值需要是2个字符和一个数字,第四个值需要是冒号,第五个值需要是2个字符还有一个数字.
任何想法如何创建一个正则表达式,将实现此插入到以下数组?
$rules = array(
'duration' => 'required|regex:/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).+$/'
);
Run Code Online (Sandbox Code Playgroud)
无效的例子:
alphacharacters e.g. qwerty
0:0:0
0:
0
1
30:211:211
30:2111:2111
a:d:d
asd
Run Code Online (Sandbox Code Playgroud)
有效的例子:
01:00:00
1:00:00
30:21:21
330:21:21
1330:21:21
11330:21:21
basically any amount of hours.
Run Code Online (Sandbox Code Playgroud)
给你的例子这个正则表达式就足够了:
^\d+:\d{2}:\d{2}$
Run Code Online (Sandbox Code Playgroud)
演示:https://regex101.com/r/kO4xN2/2
\d
数字
+
是一个量词,意味着前面一个或多个字符(或组)
{}
是一个允许的字符数量(你也可以给它一个范围)
^$
是锚点,所以字符串必须是完全匹配,如果有的话字符串中的更多内容应删除.