我试图使正则表达式满足上午或下午时间的标准。12小时时间验证涉及分号的Java正则表达式
我试过time.matches("[0-9]{2}:[0-9]{2}")
但无论我输入什么时候都找不到它,例如20:00不匹配。 另外,如何在最后添加匹配的AM或PM(接受大写或小写)。
难道是这样的time.matches("[0-9]{2}:[0-9]{2}[am|pm]")
我试图使正则表达式满足上午或下午时间的标准。12小时时间验证涉及分号的Java正则表达式
我试过time.matches("[0-9]{2}:[0-9]{2}")
但无论我输入什么时候都找不到它,例如20:00不匹配。 另外,如何在最后添加匹配的AM或PM(接受大写或小写)。
难道是这样的time.matches("[0-9]{2}:[0-9]{2}[am|pm]")
为了验证一个12小时时间格式的正则表达式应该是
(1[012]|[1-9]):[0-5][0-9](\\s)?(?i)(am|pm)
1[012]
- > 1后跟0 1或2,因为只有10个, 11,12允许次
或
[1-9]
- 1>任何一个数字时至9
随后分号
[0-5][0-9]
- >用于验证分钟。从00到59的任何内容都被接受。
(\\s)?
忽略了时间和AM或PM
(?i)(am|pm)
不区分大小写点之间的任何空白,下午验证
'\\ s'周围的括号是不必要的,但+1 – Bohemian
感谢您的解释! – user7404408
Pattern p = Pattern.compile("^[0-9]{2}:[0-9]{2}([a|p]m)?",Pattern.CASE_INSENSITIVE);
Matcher match = p.matcher("20:00PM");
if (match.find())
System.out.println(true);
else
System.out.println(false);
您可以使用如下其它图案: “^ \ d \ d: \ d \ d([A | p] M)“?
'[am | pm]'应该是'(?:am | pm)'。此外,请张贴可复制的代码。 – Maroun
@Henry oh woops mb,累了:D – user7404408