gpt4 book ai didi

java - jsf - 使用表达式语言验证日期

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:34:14 25 4
gpt4 key购买 nike

我需要检查我的生日输入字段的值。应该有几种可能:dd.MM.yyyy , dd.M.yyyy , d.MM.yyyy , d.m.yyyy还有dd.MM.yy , dd.M.yy , d.MM.yy , d.m.yy .例如,您可以输入 07.03.1993、7.3.93 或其他任何内容。

以下正则表达式示例仅检查格式验证,但不检查日期是否存在(例如 29.02.2011 或 47.02.2011 将被允许)

String s = (String) arg2;
String pattern = "^(\\d{2}|\\d{1})\\.(\\d{2}|\\d{1})\\.(\\d{2}|\\d{4})$";
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(s);

if (m.matches()) {
System.out.println(("date correct"));
} else {
System.out.println("date incorrect");
}

编辑:我刚刚创建了以下正则表达式语句,现在它检查月份是否大于 12 以及日期是否大于 31。我想我应该先使用正则表达式,然后使用 SimpleDateFormat 验证日期

String s = "^((0?[1-9]|[12][0-9]|3[01])\\.(0?[1-9]|1[012])\\.((19|20)\\d{2})$";

最佳答案

如果正则表达式不是必需的,您可以尝试使用 java.text.SimpleDateFormatparse 方法将您的字符串转换为日期,看看它是否成功。

如果是这样(您得到一个有效的 Date 对象),那么您在表单(或输入)中输入了一个有效的日期。如果不成功,parse 函数返回 null 并且您输入的 String 无效。

Hereparse 方法的 javadoc。

编辑:如果您不想使用 setLenient 进行额外验证,您可以使用从 parse 获得的 Date > 并使用相同的格式将其转换回 String。然后只需将转换产生的 String 与您作为输入提供的字符串进行比较。如果它们匹配,则您获得了有效输入。

关于java - jsf - 使用表达式语言验证日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10006879/

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