我需要验证一个12 位数字。
第 1 位和第 2 位数字 = 小于 100
第 3 位和第 4 位数字 = 介于 1 和 12 之间
第 5 位和第 6 位数字 = 介于 1 和 31 之间
一个 2 位数的值小于 100 的定义(最大值是 99),所以你不需要检查这个正则表达式将满足您的其他需求:
^\d{2}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])\d{6}$
它以任意 2 位数字开头;然后是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}$
你可以试试这个伴侣
^\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}
-匹配任意六位数字。
$
-字符串的结尾。
P.S-我建议使用非捕获组。因为您注意到在 regex 中的其他任何地方再次使用组。这将提高性能。
Demo本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(42条)