【问题标题】:Regex to match "maybe valid month"正则表达式匹配“可能有效的月份”
【发布时间】:2017-12-08 19:41:21
【问题描述】:

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

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

有人知道怎么做吗?

【问题讨论】:

  • ^\d{0,1}$“还有 4 点”
  • 您是否有理由不能使用日期选择器而不是使用正则表达式手动验证?
  • 月份是1-12,为什么0有效?
  • @wirap 因为它是“按您的类型”。所以有效数字是“可能有效”与“完全有效”

标签: javascript regex date


【解决方案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

【讨论】:

    【解决方案2】:

    这样就可以了:

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

    【讨论】:

      【解决方案3】:

      你可以这样做。

      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])$/;
      

      有许多可能的方法可以达到相同的结果。

      【讨论】:

        猜你喜欢
        • 2011-02-23
        • 1970-01-01
        • 2015-12-25
        • 2011-02-08
        • 2023-04-02
        • 1970-01-01
        • 1970-01-01
        • 2019-06-01
        相关资源
        最近更新 更多