创建正则表达式以匹配 00:00:00 的格式持续时间(不是时间)

Posted

技术标签:

【中文标题】创建正则表达式以匹配 00:00:00 的格式持续时间(不是时间)【英文标题】:create regex to match format of 00:00:00 for duration (not time) 【发布时间】:2016-02-24 06:58:07 【问题描述】:

您好,我正在使用 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.

【问题讨论】:

能否请您添加一些有效和无效的示例? @LouisBarranqueiro 已经完成 【参考方案1】:

给你的例子这个正则表达式就足够了:

^\d+:\d2:\d2$

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

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

【讨论】:

以上是关于创建正则表达式以匹配 00:00:00 的格式持续时间(不是时间)的主要内容,如果未能解决你的问题,请参考以下文章

日期正则表达式

错误:类型不匹配。值[00,00,00]与timeofday类型不匹配

grep 一行的多个正则表达式

以 00:00:00 时钟格式将 NSTimeInterval 转换为 NSString

Python startswith() 不删除所有匹配项[重复]

小程序 new Date(2019-03-01 00:00:00) 返回对象null