Products
GG网络技术分享 2025-03-18 16:15 3
还有0,1,2,3,4,99的数字
求大神帮助求大神帮助求大神帮助求大神帮助求大神帮助求大神帮助求大神帮助
/^(?:0[1-6]?|[1-4]|99)$/
感觉毫无规则啊,建议使用数组
r\'^0[1-6]?$|99$\'
正则表达式是个好工具。不管对程序员,还是对数据分析人员,正则是非常重要的技能。它的作用有点像瑞士军刀,在一些文本匹配、文本校验的情景下,一行正则表达式,往往胜过几十行代码的作用。
比如今天探讨的验证身份证号,怎么知道一串字符是不是有效的身份证号呢?
按照身份证号的编码规则:
15位身份证号排列顺序从左到右依次为:6位数字地址编码,6位数字出生日期编码,2位出生顺序编号,1位性别标号(奇数为男性,偶数为女性)。
18位身份证号由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:6位数字地址编码,8位数字出生日期编码,3位数字顺序码和1位数字校验码。
身份证号如果严格校验,要求比较多:
是不是很头大?
这些逻辑如果用普通的编程方法,估计每个几百行代码是搞不定的,但在强大的正则面前,这都不是事!
以下是实际中用过的正则写法。我嵌入SQL的时候,是吧下面四种逻辑合到一个正则里去的,为了方便阅读,拆成四个来说明,当然也并非完美结果,如果有更好写法还请给予指导,先谢过啦!
18位非闰年
^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9XxAa]$
18位闰年
^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9XxAa]$
15位非闰年
^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$
15位闰年
^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$
Demand feedback