Java正则表达式匹配年份月份
正则表达式是一种强大的工具,可以用来匹配、搜索或替换字符串中的模式。在Java中,我们可以使用java.util.regex包提供的类来进行正则表达式的操作。本文将介绍如何使用Java正则表达式来匹配年份和月份。
匹配年份
匹配年份的正则表达式可以使用以下代码:
String yearRegex = "^(19|20)\\d\\d$";
String year = "2022";
boolean isMatch = year.matches(yearRegex);
System.out.println(isMatch); // true
上述代码中,我们使用了正则表达式^(19|20)\\d\\d$
来匹配以19或20开头,后面跟着两个数字的年份。^
表示字符串的起始位置,(19|20)
表示19或20,\\d
表示数字字符,\\d\\d
表示两个数字字符,$
表示字符串的结束位置。
匹配月份
匹配月份的正则表达式可以使用以下代码:
String monthRegex = "^(0?[1-9]|1[0-2])$";
String month = "10";
boolean isMatch = month.matches(monthRegex);
System.out.println(isMatch); // true
上述代码中,我们使用了正则表达式^(0?[1-9]|1[0-2])$
来匹配以0或1开头,后面跟着一个数字的月份。^
表示字符串的起始位置,0?[1-9]
表示0或1个0,后面跟着一个数字字符,|
表示或,1[0-2]
表示以1开头,后面跟着0到2之间的数字字符,$
表示字符串的结束位置。
示例
下面是一个完整的示例代码,演示如何使用Java正则表达式来匹配年份和月份:
import java.util.Scanner;
public class YearMonthRegexExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入年份:");
String year = scanner.nextLine();
String yearRegex = "^(19|20)\\d\\d$";
boolean isYearMatch = year.matches(yearRegex);
if (isYearMatch) {
System.out.println("年份匹配成功!");
} else {
System.out.println("年份匹配失败!");
}
System.out.print("请输入月份:");
String month = scanner.nextLine();
String monthRegex = "^(0?[1-9]|1[0-2])$";
boolean isMonthMatch = month.matches(monthRegex);
if (isMonthMatch) {
System.out.println("月份匹配成功!");
} else {
System.out.println("月份匹配失败!");
}
scanner.close();
}
}
上述代码中,我们使用Scanner类从用户输入获取年份和月份,并使用正则表达式进行匹配。如果匹配成功,则打印匹配成功的消息,否则打印匹配失败的消息。
状态图
下面是一个状态图,描述了年份和月份的匹配过程:
stateDiagram
[*] --> 初始化
初始化 --> 年份输入
年份输入 --> 年份匹配成功
年份匹配成功 --> 月份输入
年份匹配成功 --> 月份输入失败
月份输入 --> 月份匹配成功
月份输入 --> 月份匹配失败
月份匹配成功 --> 结束
月份匹配失败 --> 月份输入
月份匹配失败 --> 结束
结论
本文介绍了如何使用Java正则表达式来匹配年份和月份。通过使用正则表达式,我们可以方便地验证和提取字符串中的特定模式。希望本文能够帮助你更好地理解和使用Java正则表达式。