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小时制的,月份和日期为个位数的时候前面补零,急求