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正则表达式。