我需要在正则表达式中识别字符串中的一小时。规则如下:
%m
或%h:%m
(%x
我的意思是xx
或x
); 31:59
; 000
,25:545
等字符串; :12
; 所以,我的Regex的实际变体是(使用 ExplicitCapture 选项,我验证它here):
((?<hours>([012]*[0-9])|([3]*[01]))\:)*(?<minutes>[0-5]*[0-9])
问题在于我无法“限制”此字符串( $
myregex
< / strong> ^
,令人惊讶的是,停止检测有效字符串)。知道为什么吗?
答案 0 :(得分:4)
试试这个:
^((?<hours>([012]?\d)|(3[01])):)?(?<minutes>[0-5]?\d)$
你的正则表达式存在一些问题。大多数情况下,您使用的是*
。这为许多错误打开了大门。例如,它匹配字符串"0010203333333"
。