gpt4 book ai didi

yyyymmddhhmmss 的 Java 正则表达式

转载 作者:行者123 更新时间:2023-11-29 05:03:45 25 4
gpt4 key购买 nike

我正在寻找 yyyymmddhhmmss 格式的 Java 正则表达式模式。它还应检查闰年。

下面是只检查 yyyymmdd 和闰年的模式,但现在我需要将它扩展到 yyyymmddhhmmss(以便它包括 24 小时时间格式验证)。

 public static boolean isValidFormat(String format) {
String pattern = "(?:(?:(?:(?:(?:[13579][26]|[2468][048])00)|(?:[0-9]{2}(?:(?:[13579][26])|(?:[2468][048]|0[48]))))(?:(?:(?:09|04|06|11)(?:0[1-9]|1[0-9]|2[0-9]|30))|(?:(?:01|03|05|07|08|10|12)(?:0[1-9]|1[0-9]|2[0-9]|3[01]))|(?:02(?:0[1-9]|1[0-9]|2[0-9]))))|(?:[0-9]{4}(?:(?:(?:09|04|06|11)(?:0[1-9]|1[0-9]|2[0-9]|30))|(?:(?:01|03|05|07|08|10|12)(?:0[1-9]|1[0-9]|2[0-9]|3[01]))|(?:02(?:[01][0-9]|2[0-8])))))$";
boolean matches = Pattern.matches(pattern, format);
return matches;
}

谢谢。

最佳答案

这是一种验证日期时间值的非正则表达式方法。

import java.text.*;
...
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddhhmmss");
sdf.setLenient(false);
try {
Date dt2 = sdf.parse("20150229105950");
System.out.println(dt2);
}
catch (Exception exc) {
System.out.println("NOT VALID");
}

参见 IDEONE demo

为了使用正则表达式也验证 24 小时制,您需要将其附加到它:

(?:0[0-9]|1[0-9]|2[0-3])(?:[0-5][0-9]){2}

(?:0[0-9]|1[0-9]|2[0-3]) 部分将验证从 0023(?:[0-5][0-9]){2} 将验证分钟和秒。

然后,您的正则表达式将如下所示:

(?:(?:(?:(?:(?:[13579][26]|[2468][048])00)|(?:[0-9]{2}(?:(?:[13579][26])|(?:[2468][048]|0[48]))))(?:(?:(?:09|04|06|11)(?:0[1-9]|1[0-9]|2[0-9]|30))|(?:(?:01|03|05|07|08|10|12)(?:0[1-9]|1[0-9]|2[0-9]|3[01]))|(?:02(?:0[1-9]|1[0-9]|2[0-9]))))|(?:[0-9]{4}(?:(?:(?:09|04|06|11)(?:0[1-9]|1[0-9]|2[0-9]|30))|(?:(?:01|03|05|07|08|10|12)(?:0[1-9]|1[0-9]|2[0-9]|3[01]))|(?:02(?:[01][0-9]|2[0-8])))))(?:0[0-9]|1[0-9]|2[0-3])(?:[0-5][0-9]){2}

参见 demo

请注意,您正在使用 matches() 方法强制匹配整个 字符串,因此似乎不需要 $ anchor .

关于yyyymmddhhmmss 的 Java 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31132861/

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