我想解析一个hh:mm:ss
细绳。
一个简单的就是([0-1]?\d|2[0-3]):([0-5]?\d):([0-5]?\d)
期望2:3:24
or 02:03:24
细绳。
我想更进一步并通过验证,即使在类似的情况下
- 如果你只输入 56,应该会通过,因为 56 可以被认为是 56 秒 [SS]
- 如果您输入 2:3 或 02:03 或 02:3 或 2:03 它应该通过。 2 分 3 秒 [MM:SS]
- 如果您输入 20:30:12 包含 20 小时 30 分 12 秒 [HH:MM:SS]
- 如果你输入 78:12 ,不通过 78 分钟是错误的......
基本上,如果找到一个“:”,则将“:”之前的数字视为MM,将“:”之后的数字视为SS
。如果找到两个“:”,则视为 HH:MM:SS
我想出了这个模式。
(^([0-1]?\d|2[0-3]):([0-5]?\d):([0-5]?\d)$)|(^([0-5]?\d):([0-5]?\d)$)|(^[0-5]?\d$)
看起来运行良好。我想知道任何其他更简单的正则表达式,可以完成这项工作。
^(?:(?:([01]?\d|2[0-3]):)?([0-5]?\d):)?([0-5]?\d)$
解释:
^ # Start of string
(?: # Try to match...
(?: # Try to match...
([01]?\d|2[0-3]): # HH:
)? # (optionally).
([0-5]?\d): # MM: (required)
)? # (entire group optional, so either HH:MM:, MM: or nothing)
([0-5]?\d) # SS (required)
$ # End of string
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)