Java 正则表达式判断日期格式: "20-一月-23" 以及通用方案
首先,需要将'20-一月-23' 格式的日期字符串转换为标准的日期格式,例如'2023-01-20'。然后,使用 Java 的 Pattern.matches 方法来判断字符串是否符合日期格式。
以下是实现此功能的 Java 代码示例:
import java.util.regex.Pattern;
import java.util.regex.Matcher;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
String input = "20-一月-23";
String pattern = "\d{2}-[一二三四五六七八九十]{1,3}-\d{2}";
// 将日期字符串转换为标准格式
String standardDate = convertToStandardDate(input);
// 使用Pattern.matches判断字符串是否符合日期格式
boolean isMatch = Pattern.matches(pattern, standardDate);
System.out.println(isMatch);
}
public static String convertToStandardDate(String input) {
String[] chineseMonths = {"一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"};
String[] englishMonths = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
String[] parts = input.split("-");
String day = parts[0];
String month = parts[1];
String year = parts[2];
// 获取对应的英文月份
String englishMonth = "";
for (int i = 0; i < chineseMonths.length; i++) {
if (chineseMonths[i].equals(month)) {
englishMonth = englishMonths[i];
break;
}
}
// 拼接成标准日期格式
String standardDate = year + "-" + englishMonth + "-" + day;
return standardDate;
}
}
上述代码中,我们使用了正则表达式模式\d{2}-[一二三四五六七八九十]{1,3}-\d{2}来匹配日期字符串。其中,\d{2}表示两位数字,[一二三四五六七八九十]{1,3}表示一到三个汉字的月份,\d{2}表示两位数字的年份。
然后,我们定义了一个convertToStandardDate方法,用于将'20-一月-23' 格式的日期字符串转换为'2023-01-20' 格式。在此方法中,我们使用了两个数组chineseMonths和englishMonths,分别存储中文月份和对应的英文月份。通过比较月份字符串,我们可以找到对应的英文月份。
最后,我们在main方法中调用convertToStandardDate方法将日期字符串转换为标准格式,并使用Pattern.matches方法判断字符串是否符合日期格式。
扩展
上述代码示例仅针对'20-一月-23' 格式的日期进行处理,如果需要判断其他日期格式,可以修改正则表达式模式和convertToStandardDate方法的逻辑。
例如,如果要判断'2023/01/20' 格式的日期,可以将正则表达式模式修改为\d{4}/\d{2}/\d{2},并将convertToStandardDate方法改为直接使用SimpleDateFormat类进行格式转换。
总结
使用 Java 的Pattern.matches方法可以方便地判断字符串是否符合日期格式,并且可以通过修改正则表达式模式和相关方法来适应不同的日期格式需求。
原文地址: https://www.cveoy.top/t/topic/qz08 著作权归作者所有。请勿转载和采集!