js正则校验yyyy-MM格式 同时该月份不能大于当前月份
时间: 2023-08-02 22:06:51 浏览: 95
可以使用如下正则表达式进行校验:
```javascript
const regex = /^(19|20)\d{2}-(0[1-9]|1[0-2])$/;
const input = '2021-01';
if (regex.test(input)) {
const year = input.slice(0, 4);
const month = input.slice(5);
const currentYear = new Date().getFullYear();
const currentMonth = new Date().getMonth() + 1; // getMonth() 返回的 month 是从 0 开始的,所以要加上 1
if (year > currentYear || (year === currentYear && month > currentMonth)) {
console.log('该月份不能大于当前月份');
} else {
console.log('校验通过');
}
} else {
console.log('格式不正确');
}
```
解释一下正则表达式:
- `^` 表示字符串开头
- `(19|20)` 表示年份必须以 19 或 20 开头
- `\d{2}` 表示接下来必须是两个数字
- `-` 表示接下来必须是一个减号
- `(0[1-9]|1[0-2])` 表示月份必须是 01 到 12 中的一个,注意要在前面加上 0,以匹配 01 到 09 的月份
- `$` 表示字符串结尾
将输入的年份和月份分别取出来后,就可以和当前年份和月份进行比较了。
阅读全文