Merge pull request #12241 from anuragkumawat/JAVA-11421

JAVA-11421 Update article - RegEx for matching Date Pattern in Java
This commit is contained in:
kwoyke 2022-05-23 14:22:14 +02:00 committed by GitHub
commit 86540ddcc7
3 changed files with 6 additions and 2 deletions

View File

@ -7,7 +7,7 @@ import java.util.regex.Pattern;
public class February29thMatcher implements DateMatcher {
private static final Pattern DATE_PATTERN = Pattern.compile(
"^((2000|2400|2800|(19|2[0-9](0[48]|[2468][048]|[13579][26])))-02-29)$");
"^((2000|2400|2800|(19|2[0-9])(0[48]|[2468][048]|[13579][26]))-02-29)$");
@Override
public boolean matches(String date) {

View File

@ -7,7 +7,7 @@ import java.util.regex.Pattern;
class GregorianDateMatcher implements DateMatcher {
private static final Pattern DATE_PATTERN = Pattern.compile(
"^((2000|2400|2800|(19|2[0-9](0[48]|[2468][048]|[13579][26])))-02-29)$"
"^((2000|2400|2800|(19|2[0-9])(0[48]|[2468][048]|[13579][26]))-02-29)$"
+ "|^(((19|2[0-9])[0-9]{2})-02-(0[1-9]|1[0-9]|2[0-8]))$"
+ "|^(((19|2[0-9])[0-9]{2})-(0[13578]|10|12)-(0[1-9]|[12][0-9]|3[01]))$"
+ "|^(((19|2[0-9])[0-9]{2})-(0[469]|11)-(0[1-9]|[12][0-9]|30))$");

View File

@ -37,6 +37,8 @@ public class GregorianDateTestHelper {
}
public void assertFebruary29th() {
Assert.assertTrue(matcher.matches("1904-02-29"));
Assert.assertTrue(matcher.matches("1996-02-29"));
Assert.assertTrue(matcher.matches("2000-02-29"));
Assert.assertTrue(matcher.matches("2400-02-29"));
Assert.assertTrue(matcher.matches("2800-02-29"));
@ -44,6 +46,8 @@ public class GregorianDateTestHelper {
Assert.assertTrue(matcher.matches("2024-02-29"));
Assert.assertTrue(matcher.matches("2028-02-29"));
Assert.assertFalse(matcher.matches("1900-02-29"));
Assert.assertFalse(matcher.matches("1999-02-29"));
Assert.assertFalse(matcher.matches("2017-02-29"));
Assert.assertFalse(matcher.matches("2018-02-29"));
Assert.assertFalse(matcher.matches("2019-02-29"));