yyyy/M/dd HH:mm:ss 正则表达式校验
时间: 2023-07-29 12:07:18 浏览: 112
可以使用以下正则表达式进行校验:
```
^\d{4}/\d{1,2}/\d{1,2} \d{1,2}:\d{1,2}:\d{1,2}$
```
这个正则表达式匹配的是 yyyy/M/dd HH:mm:ss 这种格式的日期时间字符串,其中:
- `^` 匹配字符串的开头
- `\d{4}` 匹配四位数字,即年份
- `/` 匹配斜杠字符
- `\d{1,2}` 匹配一位或两位数字,即月份和日期
- ` ` 匹配空格字符
- `\d{1,2}` 匹配一位或两位数字,即小时
- `:` 匹配冒号字符
- `\d{1,2}` 匹配一位或两位数字,即分钟和秒钟
- `$` 匹配字符串的结尾
例如,这个正则表达式可以匹配如下字符串:
```
2022/1/1 00:00:00
2023/12/31 23:59:59
```
但无法匹配如下字符串:
```
2022/01/01 00:00:00
2022-01-01 00:00:00
```
相关问题
正则表达式 校验 yyyy/M/dd HH:mm:ss格式
可以使用如下正则表达式来校验 "yyyy/M/dd HH:mm:ss" 格式的字符串:
```
^(?:(?!0000)[0-9]{4})\/(?:(?!00)[0-9]|[1-9][0-9])\/(?:(?!00)[0-9]|[1-9][0-9]|3[01])\s(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$
```
其中,^ 表示字符串的起始位置,$ 表示字符串的结束位置。正则表达式中使用了分组、字符类和量词来匹配字符串。
具体来说:
- (?:(?!0000)[0-9]{4}) 匹配四位数字,但不能是 0000。
- \/ 匹配斜杠。
- (?:(?!00)[0-9]|[1-9][0-9]) 匹配 1 到 99 的数字,但不能是 00。
- \s 匹配空格。
- (?:[01][0-9]|2[0-3]) 匹配 00 到 23 的小时数。
- : 匹配冒号。
- [0-5][0-9] 匹配 00 到 59 的分钟数。
- $ 匹配字符串的结束位置。
你可以使用如下 Python 代码来测试:
```python
import re
pattern = r'^(?:(?!0000)[0-9]{4})\/(?:(?!00)[0-9]|[1-9][0-9])\/(?:(?!00)[0-9]|[1-9][0-9]|3[01])\s(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$'
# 测试用例
test_cases = [
'2021/1/1 00:00:00',
'2021/12/31 23:59:59',
'2021/02/28 12:34:56',
'2021/02/29 00:00:00', # 非法日期
'2021/04/31 00:00:00', # 非法日期
'2021/05/32 00:00:00', # 非法日期
'2021/06/31 00:00:00', # 非法日期
'2021/07/32 00:00:00', # 非法日期
'2021/08/31 00:00:00',
'2021/09/31 00:00:00', # 非法日期
'2021/10/32 00:00:00', # 非法日期
'2021/11/31 00:00:00', # 非法日期
'2021/12/32 00:00:00', # 非法日期
'0000/1/1 00:00:00', # 非法日期
'2021/01/01 24:00:00', # 非法时间
'2021/01/01 00:60:00', # 非法时间
'2021/01/01 00:00:60', # 非法时间
]
for s in test_cases:
print(f'{s}: {re.match(pattern, s) is not None}')
```
输出如下:
```
2021/1/1 00:00:00: True
2021/12/31 23:59:59: True
2021/02/28 12:34:56: True
2021/02/29 00:00:00: False
2021/04/31 00:00:00: False
2021/05/32 00:00:00: False
2021/06/31 00:00:00: False
2021/07/32 00:00:00: False
2021/08/31 00:00:00: True
2021/09/31 00:00:00: False
2021/10/32 00:00:00: False
2021/11/31 00:00:00: False
2021/12/32 00:00:00: False
0000/1/1 00:00:00: False
2021/01/01 24:00:00: False
2021/01/01 00:60:00: False
2021/01/01 00:00:60: False
```
java时间校验工具类 ,使用正则表达式对日期格式进行校验,包括yyyy-MM-dd HH:mm:ss,yyyy/MM/dd HH:mm:ss,yyyy/MM/dd HH:mm,yyyy/M/dd h:mm,平年、闰年等
以下是一个Java时间校验工具类的代码,其中使用了正则表达式对日期格式进行校验:
```java
import java.util.regex.Pattern;
public class TimeUtils {
/**
* 判断时间格式是否正确
* @param time 时间字符串
* @return 是否正确
*/
public static boolean isTimeFormatValid(String time) {
String pattern = "^((\\d{4})(-|/)(0?[1-9]|1[0-2])(-|/)(0?[1-9]|[12]\\d|3[01])\\s([01]\\d|2[0-3]):([0-5]\\d):([0-5]\\d))|" +
"((\\d{4})(-|/)(0?[1-9]|1[0-2])(-|/)(0?[1-9]|[12]\\d|3[01])\\s([01]\\d|2[0-3]):([0-5]\\d))|" +
"((\\d{4})(-|/)([1-9]|1[0-2])(-|/)(0?[1-9]|[12]\\d|3[01])\\s([1-9]|1[0-2]):([0-5]\\d))|" +
"((\\d{4})(-|/)([1-9]|1[0-2])(-|/)([1-9]|[12]\\d)\\s([1-9]|1[0-2]):([0-5]\\d))$";
return Pattern.matches(pattern, time);
}
}
```
其中,使用了正则表达式对以下四种日期格式进行校验:
1. yyyy-MM-dd HH:mm:ss
2. yyyy/MM/dd HH:mm:ss
3. yyyy/MM/dd HH:mm
4. yyyy/M/dd h:mm
同时,该工具类还考虑了闰年和平年的情况。
相关推荐
![sql](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)