首页 > 其他分享 >在Delphi中使用正则表达式校验身份证号

在Delphi中使用正则表达式校验身份证号

时间:2024-08-15 18:18:15浏览次数:9  
标签:02 12 20 01 19 Delphi 身份证号 校验 89

以下内容转自: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

标签:02,12,20,01,19,Delphi,身份证号,校验,89
From: https://www.cnblogs.com/ynmsnc/p/18361536

相关文章

  • DELPHI四舍五入问题解决
    转自http://www.delphitop.com/html/jichu/153.html 感谢原作者。 这段时间在用DELPHI做一个财务系统时发现每一行的小计取了两位小数后与用SQL的ROUND查询出来的不一样,在程序中是用FormatFloat('0.00',ItemSum)函数来取值的,再用DXDBGRID网格显视合计,最终与SELECTSUM(ROUND(......
  • Delphi提高开发效率之GExperts专家的使用说明
    GExperts是一组通过扩展集成开发环境(IDE)来提高Delphi和C++Builer程序员工作效率的工具。是一款开源的IDE扩展专家,由于去外网下载GExperts非常的麻烦,这里直接提供了Delphi7和Delphi11.1下的GExperts安装包,并连带最新源码一起打包,方便大家使用学习。下面直接看他具有哪些功能,留下实......
  • 探索Delphi的多线程世界:线程与进程的奥秘
    探索Delphi的多线程世界:线程与进程的奥秘在现代软件开发中,多线程和多进程是提高应用性能和响应能力的关键技术。Delphi,作为历史悠久的编程语言,提供了丰富的多线程支持。本文将深入探讨Delphi中的线程与进程的区别,并提供实际代码示例,帮助读者理解这两种并发执行方式的内在机......
  • Delphi编程艺术:注释技巧与文档自动化
    标题:Delphi编程艺术:注释技巧与文档自动化引言在Delphi开发中,注释和文档生成是编写可维护代码的基础。Delphi支持多种注释方式,同时提供了工具和方法来自动化文档的生成。本文将详细介绍Delphi中的注释类型,以及如何使用Delphi生成Word文档等自动化文档的技巧。Delphi中的注......
  • wpf ValidationRule 校验数据输入
    publicclassCountValidationRule:ValidationRule{publicoverrideValidationResultValidate(objectvalue,System.Globalization.CultureInfocultureInfo){doubled=0.0;if(double.TryParse((string)value,out......
  • delphi里的 low to high遍历
    在Delphi中,Low和High是两个非常有用的函数,它们分别用于获取枚举类型、数组、字符串或其他有序类型的最小值和最大值。当你想要遍历这些类型的所有可能值时,Low和High函数就显得特别有用。以下是关于如何使用Low和High函数进行遍历的详细说明:遍历枚举对于枚举类型,Low......
  • koa中使用joi进行参数校验
    koa中使用joi进行参数校验超人鸭关注IP属地:广东0.312021.07.0618:23:59字数1,395阅读6,498在编写api的时候通常都需要对参数进行校验,包括参数的类型、必填等;如果是字符串,是否可以为空、该符合什么规则等;如果是数字,最大值最小值是什么等等等等。在koa中我推荐使用 j......
  • 025.Vue3入门,父页面给子页面传递数据,校验Props给出默认值
    1、App.vue代码:<template><Father/></template><scriptsetup>importFatherfrom'./view/Father.vue'</script><style></style>2、Father.vue代码<template><h3>父页面</h3><Chil......
  • 通信编码揭秘:(二)信道编码(汉明码、循环冗余校验码、里德所罗门码)与其应用
    通信编码揭秘:2.信道编码(汉明码、循环冗余校验码、里德所罗门码)与其应用摘要信道编码的目的是提高数据传输的可靠性,确保即使在噪声环境下传输的数据也能被正确接收。本文将探讨汉明码、循环冗余校验(CRC)和里德-所罗门码三种常见的信道编码方法,并通过实际例子说明它们的应用......
  • delphi 隐藏盘符
    {0000000为不隐藏或禁止所以驱动器,FFFFFFFF相反。00000001-A00000002-B00000004-C00000008-D00000010-E00000020-F00000040-G00000080-H00000100-I00000200-J00000400-K00000800-L00001000-M00002000-N00004000-O00008000-P例子:隐藏D盘\禁止D盘:NoDrives=0......