正则表达式身份证

南笙酒味 提交于 2020-02-25 00:53:45

https://c.runoob.com/front-end/854 web在线测试正则工具

常用参数介绍:

元字符

. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线或汉字
\s 匹配任意的空白符
\d 匹配数字
\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束

限定符

  • 重复零次或更多次
  • 重复一次或更多次
    ? 重复零次或一次
    {n} 重复n次
    {n,} 重复n次或更多次
    {n,m} 重复n到m次

懒惰限定符

*? 重复任意次,但尽可能少重复
+? 重复1次或更多次,但尽可能少重复
?? 重复0次或1次,但尽可能少重复
{n,m}? 重复n到m次,但尽可能少重复
{n,}? 重复n次以上,但尽可能少重复

1、身份证号(15位、18位数字),最后一位是校验位,可能为数字或字符X

  1. 长度:15位或者18位
  2. 如果是15位,则都是数字
  3. 如果是18位,最后一位可能为数字或字母X或x
    (\d{15}$)|(^\d{18}$)|(\d{17}(\d|X|x)$) //此写法来源于菜鸟教程
    出于严谨性,上述可能导致多次错误,比如1800年前出生,生日月份大于13,日期大于32等问题
  4. 增加一下几个条件来进一步限制
    a) 分步限制且测试,限制第一位不能为0,2-6为可以为任意数字
    \d[1-9]{1}[0-9]\d{4}
    b) 限制年份,必须在18,19,20之一(18/19/20之一)月份不能大于12(月份第一位为0或者1,如果为0则第二位为1-9,如果为1则为0-2,共计2位。)
    (18|19|20)?\d{3}(0[1-9]|1[0-2])
    c) 日期(日期第一位为0或者1或者2或者3,如果为0、1、2则第二位为1-9,如果为3第二位为0-1)
    (0[1-9]|[12]\d|3[01])
    d) 结尾为任意四位,但是存在大写小写X问题
    \d{4}|(\d{3}X|x)
    2、整合**
    1\d{1}[0-9]\d{4}(18|19|20)?\d{3}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{4}|(\d{3}X|x)$

摘要1:https://blog.csdn.net/qq_35766860/article/details/89239091?ops_request_misc=%7B%22request%5Fid%22%3A%22158253397919724847018827%22%2C%22scm%22%3A%2220140713.130056874…%22%7D&request_id=158253397919724847018827&biz_id=0&utm_source=distribute.pc_search_result.none-task
摘要2:https://blog.csdn.net/qq_36785111/article/details/81325593?ops_request_misc=%7B%22request%5Fid%22%3A%22158253397919724847018827%22%2C%22scm%22%3A%2220140713.130056874…%22%7D&request_id=158253397919724847018827&biz_id=0&utm_source=distribute.pc_search_result.none-task
摘要3:https://www.runoob.com/docker/docker-tutorial.html


  1. 1-9 ↩︎

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!