gpt4 book ai didi

用于日期和军事时间的 Java 正则表达式失败

转载 作者:行者123 更新时间:2023-12-02 00:01:12 30 4
gpt4 key购买 nike

我正在尝试构建一个支持日期时间的 Java 正则表达式(其中时间部分是军事时间):

MM/dd/YYYY HH:mm:ss

@Test
public void testRegexPattern() {
String regex = "([0-9]{2})/([0-9]{2})/([0-9]{4}\\s^([01]\\d|2[0-3]):?([0-5]\\d):?([0-5]\\d)$)";

String supposedDateTime = "12/31/1969 19:00:00";

Assert.assertTrue(supposedDateTime.matches(regex));
}

此测试失败,因为 suppositedDateTime 与正则表达式不匹配。任何正则表达式大师都可以找出原因吗?提前致谢。

最佳答案

为什么在 \\s 之后的中间有 caret(^) ?去掉它。这就是造成问题的原因。此外,使用 String#matches 方法,您甚至不需要使用 anchor

所以,你可以使用这个正则表达式:

"([0-9]{2})/([0-9]{2})/([0-9]{4}\\s([01]\\d|2[0-3]):?([0-5]\\d):?([0-5]\\d))"
<小时/>

讨论了正则表达式中的实际问题后,您真的不应该使用正则表达式测试日期。而是使用SimpleDateFormat使用适当的模式来解析日期字符串。

关于用于日期和军事时间的 Java 正则表达式失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14820025/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com