IC编号验证需要正则表达式

时间:2018-12-07 04:26:55

标签: regex validation ionic-framework numbers

我需要验证 12位数字 。在其中

  • 第一位数和第二位数=小于100
  • 第3位数和第4位数= 1到12之间
  • 第5位和第6位数字= 1到31之间
  • 剩下的6位数字可以是0到9之间的任何数字

    示例 190131958103

    任何人都可以给我满足上述验证条件的正则表达式吗?

    2 个答案:

    答案 0 :(得分:2)

    根据定义,2位数字的值小于100(最大值为99),因此您无需进行检查。此正则表达式将满足您的其他需求:

    ^\d{2}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])\d{6}$
    

    以任意两位数字开头;然后是01-0910-12;随后是01-0910-1920-2930-31中的一个;后跟6位数字。

    Demo on regex101

    更新

    如果您无法在模式中使用\d,则将其替换为[0-9],即

    ^[0-9]{2}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])[0-9]{6}$
    

    答案 1 :(得分:1)

    您可以尝试与此伴侣

    ^\d{2}(?:0[1-9]|1[0-2])(?:[0-1]|[1-2][0-9]|[3][0-1])\d{6}$
    

    如果您不想使用\d

     ^[0-9]{2}(?:0[1-9]|1[-2])(?:[0-1]|[1-2][0-9]|[3][0-1])[0-9]{6}$
    
      

    说明

    • ^-字符串的开头。
    • \d{2}-匹配任意两位数字。
    • (?:0[1-9]|1[-2])-非捕获组。匹配1到12之间的任何数字。
    • (?:[0-1]|[1-2][0-9]|[3][0-1])-非捕获组。匹配1到31之间的任何数字。
    • \d{6}-匹配任意六位数字。
    • $-字符串的结尾。

    PS - 我建议使用非捕获组。因为您不打算在正则表达式中的其他任何地方再次使用组,所以可以提高性能。

    Demo