首页 > 解决方案 > 正则表达式匹配 hh:mm:ss 可选小时

问题描述

我有/^(?:1[0-2]|0[0-9]):[0-5][0-9]:[0-5][0-9]$/在 PHP 中工作的模式,但是当我尝试在 Js 中使用它时,它不起作用。我只想匹配带有强制前导零的两种格式:00:00:00 或 00:00

标签: javascript

解决方案


您需要将包含小时的组放在?其后面,并将其后面的冒号放入组中。

console.log(/^(?:1[0-2]|0[0-9]:)?[0-5][0-9]:[0-5][0-9]$/.test("00:00:00"));
console.log(/^(?:1[0-2]|0[0-9]:)?[0-5][0-9]:[0-5][0-9]$/.test("00:00"));

我敢打赌你在 PHP 版本中有这个,因为这似乎是首先拥有非捕获组的唯一原因。您可能只是在复制到 Javascript 时错过了它。


推荐阅读