PHP 正则表达式匹配各种 hh:mm:ss 视频持续时间

Posted

技术标签:

【中文标题】PHP 正则表达式匹配各种 hh:mm:ss 视频持续时间【英文标题】:PHP regex to match various hh:mm:ss video durations 【发布时间】:2017-02-24 18:51:30 【问题描述】:

当给定小时值时,我无法获得正则表达式匹配。我怎样才能得到一个可能的小时来匹配(带或不带前导零)?

$val = '01:04:06'; // doesn't match
$val = '1:04:06'; // doesn't match
$val = '04:06'; // matches
$val = '4:06'; // matches

preg_match("/^([\d]1,2)\:([\d]2)$/", $val, $matches);

【问题讨论】:

试试:/^(\d1,2):\d1,2(?:\d1,2)?$/ 【参考方案1】:

只需删除前导^

如果需要分钟和秒,您可以将正则表达式重写为 /(\d?\d):(\d?\d)$/

如果您想要(可选)小时,请改写 /((\d?\d):)?(\d?\d):(\d?\d)$/

【讨论】:

您在测试中忘记了« $ »。 是的,对不起,我的错。【参考方案2】:

如果你想将它作为一个整体进行匹配,只需为第一个序列创建一个组,直到:,并添加一个量词,这样它可能会发生 1 或 2 次。

/^(([\d]1,2)\:)1,2([\d]2)$/

Test it here

【讨论】:

【参考方案3】:

这是来自类似 *** post 的另一个,但已转换为 preg_match:

preg_match("/^(?:(?:([01]?\d|2[0-3]):)?([0-5]?\d):)?([0-5]?\d)$/", $val, $matches);

【讨论】:

以上是关于PHP 正则表达式匹配各种 hh:mm:ss 视频持续时间的主要内容,如果未能解决你的问题,请参考以下文章

我需要一个正则表达式来验证时间格式 HH:MM:SS:mm [重复]

c posix 正则表达式来验证输入 HH:MM:SS 时间字符串

求java正则表达式,格式yyyy-mm-dd hh:mm:ss 24小时制的,月份和日期为个位数的时候前面补零,急求

有人能告诉我dateTimeString的正则表达式如下:“YYYY / MM / DD HH:MM:SS”[关闭]

Javascript 正则表达式一次匹配

如何将标准正则表达式转换为 php 正则表达式? [复制]