gpt4 book ai didi

java - 日期格式 : dd. MM.yyyy、MM.yyyy 和 yyyy 的模式匹配

转载 作者:行者123 更新时间:2023-12-02 02:56:26 29 4
gpt4 key购买 nike

我需要检查给定字符串的日期。我得到的字符串不规则,我不想使用 Dateformat 或类似的东西。我试图避免出现多个异常。我需要 dd.MM.yyyyMM.yyyyyyyy 的正则表达式。一开始我有

\\d+\\.?\\d+\\.?\\d+ 

但这不起作用。

最佳答案

如果您确实想使用正则表达式,这里是一个基本的工作示例:

String regex = "([0-9]{2}\\.){0,2}([0-9]{4})";
assert "03.2017".matches(regex);
assert "31.03.2017".matches(regex);
assert "2017".matches(regex);
assert !"23-2017".matches(regex);

请注意:

  • 它只会检查正确位置是否有数字
  • 它不会检测错误的年份(例如 0013)或错误的日期/月份(第 45 天或第 15 个月)

要真正检查日期,我建议您使用专门为此设计的库,例如 DateFormatJodaTime 或 apache 的 DateUtils

<小时/>

使用DateTimeFormatter:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("[[dd.]MM.]yyyy");
// correct dates
assert formatter.parse("31.12.2017") != null;
assert formatter.parse("12.2017") != null;
assert formatter.parse("2017") != null;
// wrong date
assert formatter.parse("31.2017") == null;
<小时/>

使用DateUtils (maven link):

String[] acceptedFormats = {"dd.MM.yyyy", "dd.MM.yyyy", "dd/MM/yyyy"};

// correct dates
assert DateUtils.parseDate("07.12.2017", acceptedFormats) != null;
assert DateUtils.parseDate("07.2017", acceptedFormats) != null;
assert DateUtils.parseDate("2017", acceptedFormats) != null;
assert DateUtils.parseDate("2017", acceptedFormats) != null;
// wrong dates
assert DateUtils.parseDate("123.2012", acceptedFormats) == null;
assert DateUtils.parseDate("01.13.2012", acceptedFormats) == null;

关于java - 日期格式 : dd. MM.yyyy、MM.yyyy 和 yyyy 的模式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42995514/

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