Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java-搜索信用卡到期的正则表达式,该正则表达式还检查年份是否在过去_Java_Regex_Validation - Fatal编程技术网

java-搜索信用卡到期的正则表达式,该正则表达式还检查年份是否在过去

java-搜索信用卡到期的正则表达式,该正则表达式还检查年份是否在过去,java,regex,validation,Java,Regex,Validation,我正在搜索一个可以在java中使用的正则表达式/函数,这样我就知道给定的MM/YYYY如果年份是过去的,那么它将无法通过验证 到目前为止,我有: (0[1-9]|10|11|12)/20[1-9]{2} 但正如你所见,这意味着201*仍然有效。因此,2015年将是有效的,等我想从今年起将是有效的。过去的任何一年都不应有效。如何执行此操作?您可以使用LocalDate: 或更基本的元素操作: String date ="04/2012"; boolean past = Integer.parse

我正在搜索一个可以在java中使用的正则表达式/函数,这样我就知道给定的MM/YYYY如果年份是过去的,那么它将无法通过验证

到目前为止,我有:

(0[1-9]|10|11|12)/20[1-9]{2}
但正如你所见,这意味着201*仍然有效。因此,2015年将是有效的,等我想从今年起将是有效的。过去的任何一年都不应有效。如何执行此操作?

您可以使用LocalDate:

或更基本的元素操作:

String date ="04/2012";
boolean past = Integer.parseInt(date.split("/")[1]) < LocalDate.now().getYear();
System.out.println(past);   // true
All将返回一个布尔值,就像使用一个正则表达式来告诉您是否匹配一样


regex的问题在于,您每年都会重新考虑模式,而且如果详细说明2017年接受的int值,而不是2016年接受的int值,这将是不好的

一般来说,我不建议在没有必要的情况下使用regex,但我能想到的最佳答案是这样做:

(0[1-9]|10|11|12)/201[7-9]|202[0-9]
请注意,验证仅在年份进行,类似2017年1月这样的日期才有效。如果你想解决这个问题,你必须在2017年的前一个月有一个案例


另外,我真的建议使用@azro建议的LocalDate。

而不是使用Luhn算法和日期/时间APIx为什么人们坚持在不合适的地方使用正则表达式?将元素解析为LocalDate,然后检查年份是在当前年份之前还是之后,更好。。。java.time.YearMonth.如何获取当前年份?
(0[1-9]|10|11|12)/201[7-9]|202[0-9]