zoukankan      html  css  js  c++  java
  • 在Delphi中使用正则表达式校验身份证号

    以下内容转自:https://my.oschina.net/ousinka/blog/3048132

    如何定义身份证号的正则表达式呢?

    1、省份编码
    [1-9]\d{5}
    2、年份
    (18|19|20)?\d{2}
    3、月份为 1, 3, 5, 7, 8, 10, 12,天数范围为 01 - 31,匹配MMDD的正则表达式为:
    (0[13578]|1[02])(0[1-9]|[12][0-9]|3[01])
    4、月份为 4, 6, 9, 11,天数范围为 01-30,匹配MMDD的正则表达式为:
    (0[469]|11)(0[1-9]|[12][0-9]|30)
    5、月份为 2,考虑平年情况,匹配MMDD的正则表达式为:
    02(0[1-9]|[1][0-9]|2[0-8])
    6、闰年
    能被4整除但不能被100整除的年份。
    (1[89]|20)(0[48]|[2468][048]|[13579][26])
    能被400整除的年份,只有1900和2000两个年份
    (19|20)00
    闰年的2月份有29天
    (((1[89]|20)(0[48]|[2468][048]|[13579][26]))|((19|20)00))0229
    7、校验码4位
    \d{3}(\d|X|x)

    8、包含闰年 yyyyMMdd:
    ((1[89]|20)\d{2}(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8]))))|((((1[89]|20)(0[48]|[2468][048]|[13579][26]))|((19|20)00))0229)
    9、合并起来身份证正则式为:

    [1-9]\d{5}(((1[89]|20)\d{2}(((0[13578]|1[0-2])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8]))))|((((1[89]|20)(0[48]|[2468][048]|[13579][26]))|((19|20)00))0229))\d{3}(\d|X|x)

    现在我们得到了身份证号的正则表达式,现在看看Delphi中如何使用他?

    首先要引用System.RegularExpressions单元,然后见下面代码:

      pattern:='^[1-9]\d{5}(((1[89]|20)\d{2}(((0[13578]|1[0-2])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8]))))|((((1[89]|20)(0[48]|[2468][048]|[13579][26]))|((19|20)00))0229))\d{3}(\d|X|x)$';
      if TRegEx.Match(身份证号, pattern ).Success then
    ...

    好了,一起用吧。支持闰年的!

  • 相关阅读:
    一个泛型栈类(GenericStack)
    Google Maps API v2初探
    浅谈工作中celery与Redis遇到的一些问题 PTSD
    python PTSD
    77%的Linux运维都不懂的内核问题
    教程 | Linux常用命令大全
    分布式架构系列: 负载均衡技术详解
    10大Python开源项目推荐(Github平均star2135)
    你必须学写 Python 装饰器的五个理由
    五分钟搞定 Linux 文档全部知识,就看这篇文章
  • 原文地址:https://www.cnblogs.com/kinglandsoft/p/15654537.html
Copyright © 2011-2022 走看看