正则表达式匹配“也许有效月份”

时间:2017-12-08 19:41:22

标签: 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, 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

任何人都知道怎么做?

3 个答案:

答案 0 :(得分:1)

这样做:

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

即:

  • 单个数字0或1
  • 0后跟单个数字1 .. 9
  • 1后跟0,1或2

测试输出:

0, should be True:  true
1, should be True:  true
00, should be False:  false
01, should be True:  true
12, should be True:  true
99, should be False:  false

答案 1 :(得分:0)

这样做:

/^0[1-9]|[0-9]|1[0-2]$/

答案 2 :(得分:0)

你可以这样做。

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

或:

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

或:

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

有很多可能的方法可以达到相同的效果。