如何编写Regex校验支持任意位数分钟数的MM:SS时间格式
MM:SS格式(分钟可超60)正则校验方案
你当前使用的正则存在分钟位长度限制问题:
^[0-1]?[0-9]:[0-5][0-9]$
该写法将冒号左侧的分钟值限制为最多2位、且首位只能是0或1,因此无法匹配123:59这类分钟数超过两位、或分钟值≥20的场景。
最简高效正则写法
要支持冒号左侧为任意位数数字,同时保证秒位始终在00-59的合法区间,直接使用以下正则即可:
^\d+:[0-5]\d$
规则说明
^:锚定字符串开头,避免开头出现多余字符\d+:匹配1个及以上数字,支持任意长度的分钟值(可匹配0:00/59:59/123:59/10000:59等所有合法分钟长度的格式)::匹配固定冒号分隔符[0-5]\d:校验秒位,第一位取值范围0-5、第二位为0-9,保证秒数落在00-59的合法区间$:锚定字符串结尾,避免结尾出现多余字符
可选优化(禁止分钟前导零)
如果业务规则不允许分钟位出现无意义前导零(比如禁止匹配012:34这类格式),可以将分钟匹配规则调整为非前导零写法,对应正则:
^(0|[1-9]\d*):[0-5]\d$
该写法仅允许分钟值为单独的0,或是非零开头的任意长度数字,过滤掉前导零的非法格式。
内容的提问来源于stack exchange,提问作者AdamJones
相关产品推荐
相关产品推荐

