当前位置: 首页 > Web前端 > HTML

正则表达式的应用:身份证号识别

时间:2023-03-28 14:40:09 HTML

今天项目中遇到一个身份证号识别的问题。我需要识别15位或18位的居民身份证。上网查了下,觉得很有意思。在这里分享给大家我的理解过程,希望能帮助大家更好的学习正则表达式。18位身份证号码标识/^([1-6][1-9]|50)\d{4}(18|19|20)\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/这是一个比较完整的识别正则,看一下如果你感到困惑,我们先把它分成5个部分。首先要说明的是:开头的^符号表示要识别的对象的开头,即字符串的开始位置,$表示字符串的结束位置。part1(身份证1-6位数字):^([1-6][1-9]|50)\d{4}方括号中的1-6表示1-6中的任意数字,1-9表示任意1-9之间的数,所以[1-6][1-9]的组合代表两个符合规则的数,后面的|表示or的关系,也就是说可能是50,那么\d{4}就是四位数的意思。因此,part1规定了18位居民身份证号码的前6位。part2(身份证7-10位):(18|19|20)\d{2}这部分比较好理解,第一个是(18|19|20),表示可能是18、19、20,然后后面的\d{2}表示为两位数。part3(身份证11-12位):((0[1-9])|10|11|12)与part2类似,括号内内容:(0[1-9])表示两位数,其中第一个数字是0,第二个数字是0-9中的任意数字。竖线表示或的关系,也可能是10、11、12。简单来说,这个正则就是限制两位数。part4(身份证13-14位):(([0-2][1-9])|10|20|30|31)类似part3,先限定一个两位数([0-2][1-9]),第一个数是0-2,第二个数是1-9,后面是可能的两位数(可能是10、20、30、31)除此规则外)part5(身份证15-18位):\d{3}[0-9Xx]$这部分也很好理解,前面是3位,然后最后一位(18位)是有限的,这个位可能是0-9直接数字,也可以是X或小写的x,最后的$表示整个字符串的结束。15位身份证号码标识/^([1-6][1-9]|50)\d{4}\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}$/15位身份证正则识别与18位身份证类似,我们也把它拆开来一块一块地看。part1(身份证1-6位):^([1-6][1-9]|50)\d{4}这部分和15位part1一致,这里不再赘述.part2(身份证7-10位数字):\d{2}((0[1-9])|10|11|12)先\d{2}表示两位数,后面括号也表示两位数定期验证数字(此处验证月份)。part3(身份证11-12位数字):(([0-2][1-9])|10|20|30|31)这部分也代表两位数,不再赘述。part4(身份证13-15位数字):\d{3}$三位数字和结束符号。给正则表达式初学者的一个小建议。一开始,正则表达式拆分起来会比较困难,因为有些正则表达式可能写的很长。这里推荐一个可以格式化正则表达式的网站。粘贴它,网站将自动拆成碎片。RegExr总结,不管是前端工程师还是后端工程师,正则表达式都是需要掌握的技术。感触很深的是,在刷一些leetcode的时候,正则表达式总能出乎意料的轻松解决字符串问题,正则性也很好用,不得不说,正则性真的很厉害!