我需要验证 12位数字 。在其中
答案 0 :(得分:2)
根据定义,2位数字的值小于100(最大值为99),因此您无需进行检查。此正则表达式将满足您的其他需求:
^\d{2}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])\d{6}$
以任意两位数字开头;然后是01-09
或10-12
;随后是01-09
,10-19
,20-29
或30-31
中的一个;后跟6位数字。
更新
如果您无法在模式中使用\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 - 我建议使用非捕获组。因为您不打算在正则表达式中的其他任何地方再次使用组,所以可以提高性能。