我正在一张工作表中节省时间,该工作表可以存储00:00
到23:59
和0000
到2359
之间的值。然而,我使用的正则表达式不起作用。任何小于10:00
小时的值,例如9:00
它都不起作用。我意识到它的错误并没有达到标记可以任何人帮助正确的正则表达式或修复这个:
^(([0-2][0-3]:[0-5][0-9])|([0-1][0-9]:[0-5][0-9])|([0-9][0-5][0-9])|([0-2][0-3][0-5][0-9])|([0-1][0-9][0-5][0-9])|([0-5][0-9])|([0-9]))$
注意我需要能够输入没有冒号的值。
答案 0 :(得分:1)
我能想到的最好的东西似乎与你自己的尝试相匹配是这样的:
^(?:2[0-3]|[0-1]?[0-9])?:?[0-5]?[0-9]$
似乎你想要允许单个和两个数字的输入(我想是数分钟,因为允许的两位数是00到59),Michal的答案没有考虑到。但Anirudh的解决方案可能是最好的解决方案。但这取决于你的需求。
此致
答案 1 :(得分:0)
不要使用正则表达式。您可以使用TimeSpan
TimeSpan.ParseExact(input,"hh:mm",CultureInfo.CurrentCulture);
如果输入不是hh:mm
格式
虽然你的正则表达式中缺少[0-9](:\d{1,2})?
答案 2 :(得分:0)
您可以修改从Regular expression for matching HH:MM time format到
的答案^([0-9]|0[0-9]|1[0-9]|2[0-3]):?[0-5][0-9]$
看起来像这样
答案 3 :(得分:0)
你可以尝试这个:
([0-2][0-3]:[0-5][0-9])|([0-1][0-9]:[0-9][0-9])|(^[0-9]:[0-9]+)