正则表达——正确匹配身份证

''' 
身份证号码是一个长度为15或18个字符的字符串,如果是15位则全部由数字组成,首位不能为0;
如果是18位,则前17位全部是数字,末位可能是数字或x,下面我们尝试用正则来表示:
''' ^[1-9]\d{14}(\d{2}[0-9x])?$ # 匹配:110105199812067023 # ()表示分组,将\d{2}[0-9x]分成一组,就可以整体约束他们出现的次数为0-1次 # ^: 匹配字符串的开始 # []: 匹配字符组中的字符 # \d: 匹配数字 # {n}: 重复匹配n次 # (): 匹配括号内表达式,分组 # ?: 重复一次或零次 # $: 匹配字符串的结尾 ^([1-9]\d{16}[0-9x]|[1-9]\d{14})$ # 匹配:110105199812067023 # 表示先匹配[1-9]\d{16}[0-9x]如果没有匹配上就匹配[1-9]\d{14}

 

posted @ 2017-11-13 18:35  ZhuGaochao  阅读(1878)  评论(0编辑  收藏  举报