java 正则精准校验日期字符串 如二月只有28天
时间: 2023-10-12 12:19:37 浏览: 51
可以使用以下正则表达式来精准校验日期字符串,包括闰年和非闰年的情况:
```
^(?:(?!0000)[0-9]{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12][0-9]|3[01])|(?:0[469]|11)-(?:0[1-9]|[12][0-9]|30)|02-(?:0[1-9]|1[0-9]|2[0-8]))|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[3579][26])00)-02-29)$
```
该正则表达式可以匹配以下日期字符串格式:
- 年-月-日(如:2022-01-31)
- 年-月-日(如:2022-02-28)
- 年-月-日(如:2020-02-29)
其中,闰年的判断规则是:能被4整除但不能被100整除,或者能被400整除的年份为闰年。这个规则已经被包含在了上面的正则表达式中。
相关问题
Java 使用正则表达式 校验 日期字符串
可以使用正则表达式来校验日期字符串,以下是一个简单的 Java 代码示例:
```java
import java.util.regex.Pattern;
public class DateValidator {
private static final String DATE_PATTERN =
"^\\d{4}-\\d{2}-\\d{2}$";
public static boolean validate(String date) {
return Pattern.matches(DATE_PATTERN, date);
}
}
```
上述代码中,我们定义了一个常量 `DATE_PATTERN`,它是一个正则表达式,用于匹配 yyyy-MM-dd 格式的日期字符串。然后我们编写了一个 `validate()` 方法,该方法接受一个日期字符串作为参数,使用 `Pattern.matches()` 方法来判断该字符串是否符合指定的日期格式。
你可以在自己的代码中使用这个 `DateValidator` 类来校验日期字符串。例如:
```java
String dateStr = "2022-01-01";
if (DateValidator.validate(dateStr)) {
System.out.println("日期格式正确");
} else {
System.out.println("日期格式不正确");
}
```
输出:
```
日期格式正确
```
java 使用正则表达式 校验日期格式字符串为yyyy-mm
可以使用以下正则表达式来校验日期格式字符串为 yyyy-mm:
```
^\d{4}-(0[1-9]|1[0-2])$
```
解释:
- `^`:表示字符串的开头
- `\d{4}`:表示四个数字,即年份
- `-`:表示一个横杠
- `(0[1-9]|1[0-2])`:表示月份,可以是 01 到 09 或者是 10 到 12
- `$`:表示字符串的结尾
所以完整的 java 代码可以如下所示:
```java
String regex = "^\\d{4}-(0[1-9]|1[0-2])$";
String dateStr = "2022-12";
if (dateStr.matches(regex)) {
System.out.println("日期格式正确");
} else {
System.out.println("日期格式错误");
}
```
输出结果为:
```
日期格式正确
```