如何在Java中检查字符串的格式是否为MM-YY?

如何在Java中检查字符串的格式是否为MM-YY?,java,sql,controls,string-formatting,Java,Sql,Controls,String Formatting,我必须向数据库中添加一个格式为“MM-YY”的字符串,该字符串表示信用卡的到期日期,其中MM是月份,YY是一年的最后两位数字,如何在Java中检查字符串是否为这种特定格式 使用正则表达式: String myString = "12-99"; if( myString.matches("((0[1-9])|(1[0-2]))-\\d{2}") ){ System.out.println("Correct format"); } else{ System.out.println("In

我必须向数据库中添加一个格式为“MM-YY”的字符串,该字符串表示信用卡的到期日期,其中MM是月份,YY是一年的最后两位数字,如何在Java中检查字符串是否为这种特定格式

使用正则表达式:

String myString = "12-99";

if( myString.matches("((0[1-9])|(1[0-2]))-\\d{2}") ){
   System.out.println("Correct format");
}
else{
  System.out.println("Incorrect format");
}
尝试使用下面的正则表达式

String str = "10-18";
if (str.matches("([0-9]{2})-([0-9]{2})"))
 System.out.println("Correct");
else 
System.out.println("Incorrect");
java.time.YearMonth
解析为一个。异常陷阱

String input = "99-18" ;  // Valid: "01-18"  Invalid: "99-18"
DateTimeFormatter f = DateTimeFormatter.ofPattern( "MM-uu" ) ;

YearMonth ym = null ;
try {
    ym = YearMonth.parse( input , f ) ;
} catch ( DateTimeParseException e ) {
    System.out.println( "Invalid input: " + input ) ;
}

System.out.println( "ym.toString(): " + ym ) ;
看这个

无效输入:99-18

ym.toString():null


关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,&

该项目现已启动,建议迁移到类

要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是

您可以直接与数据库交换java.time对象。使用兼容的或更高版本。不需要字符串,也不需要
java.sql.*

从哪里获得java.time类

  • 、和更高版本-标准Java API的一部分,带有捆绑实现。
    • Java9添加了一些次要功能和修复
    • 大多数java.time功能都在中向后移植到Java6和Java7
    • 更高版本的Android捆绑包实现了java.time类

    • 对于早期的Android(请看:@rieckpil这个问题不是完全重复的。这个问题是关于年-月-日的,而这个问题是关于年-月-日的。不同的解决方案,在这里使用类。类似:@BasilBourque,我没有将这个问题标记为重复。只是发布了一个可能的方式来支持自己找到解决方案;)谢谢大家,我解决了这个问题