java校验日期的合法性

https://blog.51cto.com/u_13416/6411660

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.ResolverStyle;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegTest {
    public static void main(String[] args) {
        Matcher matcher = Pattern.compile("(SCP)([0-9]{4}[0-9]{2}[0-9]{2})([0-9]{8})").matcher("fjishh哈哈哈,打卡机;SCP2023510145623587");
        if (matcher.find()) {
            //校验日期是否合法
            String format = "yyyyMMdd";
            DateTimeFormatter ldt = DateTimeFormatter.ofPattern(format.replace("y", "u")).withResolverStyle(ResolverStyle.STRICT);
            System.out.println(matcher.group(0));
            System.out.println(matcher.group(1));
            System.out.println(matcher.group(2));
            System.out.println(matcher.group(3));
            boolean validateRes = LocalDate.parse(matcher.group(2), ldt) == null ? false : true;
            if (validateRes) {
                System.out.println("成功了");
            }
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 可以使用Java正则表达式来校验日期的格式是否正确。下面是一个使用正则表达式校验日期的示例代码: ```java import java.util.regex.*; public class DateValidator { public static boolean isValidDate(String date) { // 使用正则表达式匹配日期的格式 String regex = "^\\d{4}-\\d{2}-\\d{2}$"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(date); // 如果匹配成功,则日期格式正确,返回true;否则返回false return matcher.matches(); } public static void main(String[] args) { String date1 = "2020-06-01"; String date2 = "2020/06/01"; System.out.println(date1 + " 是否为有效日期: " + isValidDate(date1)); System.out.println(date2 + " 是否为有效日期: " + isValidDate(date2)); } } ``` 上述代码中,使用`^\\d{4}-\\d{2}-\\d{2}$`正则表达式来匹配日期的格式。其中,`^`表示匹配字符串的开始,`\\d{4}`表示匹配4个数字,`-`表示匹配`-`字符,`\\d{2}`表示匹配2个数字,`$`表示匹配字符串的结束。通过`Pattern.compile(regex)`编译正则表达式,并使用`matcher.matches()`方法匹配输入的日期。如果匹配成功,则返回true,否则返回false。 在`main`方法中,将需要校验日期作为参数传递给`isValidDate`方法进行校验,并打印校验结果。 ### 回答2: Java正则表达式可以用于校验日期格式是否合法。下面是一个示例的正则表达式来校验日期格式: String regex = "^(\\d{4})-(0?[1-9]|1[0-2])-(0?[1-9]|[12][0-9]|3[01])$"; 其中,正则表达式的含义如下: ^ 表示匹配字符串的开始位置 \\d{4} 表示匹配四个数字,即年份 - 表示匹配年份和月份之间的连接符 (0?[1-9]|1[0-2]) 表示匹配月份,可以是01到09或者是10到12 - 表示匹配月份和日期之间的连接符 (0?[1-9]|[12][0-9]|3[01]) 表示匹配日期,可以是01到09、10到29或者是30到31 $ 表示匹配字符串的结束位置 要使用正则表达式进行日期校验,可以使用String类的matches方法,如下所示: String date = "2021-10-15"; boolean isValid = date.matches(regex); if (isValid) { System.out.println("日期格式合法"); } else { System.out.println("日期格式不合法"); } 以上代码中,我们传入要校验日期和正则表达式,使用matches方法进行匹配,结果为true表示日期格式合法,结果为false表示日期格式不合法。 需要注意的是,这个正则表达式只校验日期的格式,不校验具体的合法日期。例如,它可以匹配到2021-02-29这样的日期,但实际上2021年并没有2月29日这一天。因此,在实际应用中,还需要结合日期类进行进一步的校验,以确保日期合法性。 ### 回答3: Java中可以使用正则表达式来校验日期。以下是一个示例代码: ```java import java.util.regex.Matcher; import java.util.regex.Pattern; public class DateValidator { private static final String DATE_PATTERN = "^\\d{4}-\\d{2}-\\d{2}$"; public static boolean validateDate(String date) { Pattern pattern = Pattern.compile(DATE_PATTERN); Matcher matcher = pattern.matcher(date); return matcher.matches(); } public static void main(String[] args) { String date1 = "2022-01-01"; String date2 = "2022/01/01"; if (validateDate(date1)) { System.out.println(date1 + "是一个有效的日期"); } else { System.out.println(date1 + "不是一个有效的日期"); } if (validateDate(date2)) { System.out.println(date2 + "是一个有效的日期"); } else { System.out.println(date2 + "不是一个有效的日期"); } } } ``` 上述代码中,使用了一个正则表达式`^\\d{4}-\\d{2}-\\d{2}$`来校验日期格式是否为`yyyy-MM-dd`的形式。`^`和`$`分别表示字符串的开始和结束。`\\d{4}`表示四个数字的年份,`\\d{2}`表示两个数字的月份和日期。整个正则表达式要求输入的日期必须是以`yyyy-MM-dd`的格式表示。在`validateDate`方法中,通过Pattern类和Matcher类来进行正则表达式的匹配和校验。在main方法中,我们分别测试了一个符合要求的日期`2022-01-01`和一个不符合要求的日期`2022/01/01`,并打印出了校验结果。 请注意,这只是一个简单示例,仅校验日期的格式,而不是真正的日期有效性。在实际应用中,可能还需要考虑月份、日期的范围等更详细的校验规则。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值