求一个可以验证时间格式MMdd的js正则表达式

求一个可以验证时间格式MMdd的js正则表达式
比如输入0101 就代表1月1日就可以通过
如果输入1313就验证失败

阅读 2k
1 个回答

利用反向肯定预查和反向否定预查(兼容性不好):/^(0[1-9]|1[012])(0[1-9]|1[0-9]|2[0-9]|(?<!02)30|(?<=01|03|05|07|08|10|12)31)$/

利用正向否定预查:/^(?!0230$)(((01|03|05|07|08|10|12)31$)|(0[1-9]|1[012])(0[1-9]|1[0-9]|2[0-9]|30))$/

['0001', '0228', '0230', '0330', '0331', '0332', '0430', '0431'].forEach(item => {
    console.log('test:' + item)
    console.log('反向预查:' + /^(0[1-9]|1[012])(0[1-9]|1[0-9]|2[0-9]|(?<!02)30|(?<=01|03|05|07|08|10|12)31)$/.test(item))
    console.log('正向预查:' + /^(?!0230$)(((01|03|05|07|08|10|12)31$)|(0[1-9]|1[012])(0[1-9]|1[0-9]|2[0-9]|30))$/.test(item))
})
//false true false true true false true false
推荐问题