Javascript 正则表达式匹配“;“可能有效月份”;

Javascript 正则表达式匹配“;“可能有效月份”;,javascript,regex,date,Javascript,Regex,Date,基本上,我想匹配以下内容: const regex = /(?=.*[0-1])(?=.*[^0{2}])|(0[1-9]|1[012])$/ console.log('0, should be True: ', regex.test('0')) console.log('1, should be True: ', regex.test('1')) console.log('00, should be False: ', regex.test('00')) console.log('01, sh

基本上,我想匹配以下内容:

const regex = /(?=.*[0-1])(?=.*[^0{2}])|(0[1-9]|1[012])$/
console.log('0, should be True: ', regex.test('0'))
console.log('1, should be True: ', regex.test('1'))
console.log('00, should be False: ', regex.test('00'))
console.log('01, should be True: ', regex.test('01'))
console.log('12, should be True: ', regex.test('12'))
console.log('99, should be False: ', regex.test('99'))
有效:
0,1,01-09,10-12
无效:
00,>12

有人知道怎么做吗?

这样可以:

/^0[1-9]|[0-9]|1[0-2]$/
const regex = /^([01]|0[1-9]|1[012])$/;
这将有助于:

/^0[1-9]|[0-9]|1[0-2]$/
const regex = /^([01]|0[1-9]|1[012])$/;
即:

  • 单个数字0或1
  • 0后跟一位数1。。九,
  • 1后跟0、1或2
测试的输出:


你可以这样做

var regex = /^\d?$|^0[1-9]?$|^1(=?[0-2])$/;
或:

或:


有很多方法可以实现相同的结果。

^\d{0,1}$“还有4个”是否有一个原因让你不能使用日期选择器而不是用正则表达式手动验证它?如果月份是1-12,为什么0有效?@wirap因为它是“按你键入的”。因此,有效数字是“可能有效”与“完全有效”
var regex = /^(\d?|^0[1-9]?|^1[0-2])$/;