找回密码
 立即注册

QQ登录

只需一步,快速开始

伤疤也微笑

初级会员

15

主题

72

帖子

295

积分

初级会员

积分
295

微信认证勋章

伤疤也微笑
初级会员   /  发表于:2019-1-24 12:09  /   查看:10325  /  回复:25
本帖最后由 伤疤也微笑 于 2019-1-25 13:05 编辑

校验的正则表达式:
前言

开发过程中,常常需要对一些输入信息进行有效性验证,使用正则表达式进行校验是最简单、效率最高的方式了,下面就来看看15/18位身份证号码验证的正则表达式吧。

介绍

xxxxxx yyyy MM dd 375 0     十八位
xxxxxx    yy MM dd   75 0     十五位
地区: [1-9]\d{5}
年的前两位: (18|19|([23]\d))            1800-2399
年的后两位: \d{2}
月份: ((0[1-9])|(10|11|12))
天数: (([0-2][1-9])|10|20|30|31)          闰年不能禁止29+
三位顺序码: \d{3}
两位顺序码: \d{2}
校验码: [0-9Xx]

正则表达式

十八位: ^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$

十五位: ^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}$

总:

( ^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}$)

简单的JS验证示例

function isCardNo(card) { // 身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/; if(reg.test(card) === false) { alert("身份证输入不合法"); return false; } }


1、出生年月日,并以日期格式存储
2、性别
3、年龄
4、工程中已经添加身份证校验功能,只要输错一位,就是错的!(哪怕是符合正则表达式只要错一位,也会检测)




有意见或建议均可提


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

评分

参与人数 1金币 +200 收起 理由
Simon.hu + 200 赞一个!

查看全部评分

25 个回复

正序浏览
Lay.Li悬赏达人认证 活字格认证
超级版主   /  发表于:2022-8-12 12:03:00
27#
问题解决了就好~目前活字格自带的数据验证就有身份证号码验证哈


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
活子格低代码
注册会员   /  发表于:2022-8-12 10:15:49
26#
活子格低代码 发表于 2022-8-12 10:09
大佬你好,我引用的总的公式,运行出来的还是十五位,我在数据验证-正则表达式中直接把总公式粘贴过去的 ...

找到原因了,用文本格式就正常了
回复 使用道具 举报
活子格低代码
注册会员   /  发表于:2022-8-12 10:09:23
25#
Simon.hu 发表于 2019-1-24 12:15
现在是不是都不怎么有一代身份证了吧?

大佬你好,我引用的总的公式,运行出来的还是十五位,我在数据验证-正则表达式中直接把总公式粘贴过去的,我还试了下在自定义公式中粘贴去的总公式,运行出来的依然是十五位
回复 使用道具 举报
Joe.xu讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2022-6-23 16:47:54
23#
沉木主人 发表于 2022-6-23 15:10
不知道啥原因,我的身份证号用正则表达式就是不验证第18位,第18位输入X和任意数字都不提示有错误。比如 ...

大哥,我明白了,您是想部件校验身份证号的格式,还要校验正确性是吧,比如输入张三,要看这个身份证号是不是和张三匹配?
这种的话,是需要找公安机关授权的,不然是拿不到一个人对应的身份信息的。
回复 使用道具 举报
沉木主人
初级会员   /  发表于:2022-6-23 15:10:50
22#
Joe.xu 发表于 2022-6-23 13:41
大哥,身份证最后一位只能是数字,或者是大写的X,
这些我都测了,没问题,如果您那边不行的话,建议发一 ...

不知道啥原因,我的身份证号用正则表达式就是不验证第18位,第18位输入X和任意数字都不提示有错误。比如身份证号本来最后一位是8,输入其他数字也不会提示出错。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Joe.xu讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2022-6-23 13:41:20
21#
沉木主人 发表于 2022-6-23 12:35
请您把W改为别的数字验证,最后一位除了是X外,其他字母验证都不通过。您用数字验证。比如把W改为任意数 ...

大哥,身份证最后一位只能是数字,或者是大写的X,
这些我都测了,没问题,如果您那边不行的话,建议发一个demo,
录一个出错的动图,我们看下哈
回复 使用道具 举报
沉木主人
初级会员   /  发表于:2022-6-23 12:35:01
20#
本帖最后由 沉木主人 于 2022-6-23 12:55 编辑
Joe.xu 发表于 2022-6-10 16:21
我在6.0.104/7.0.104版本验证了一下,校验是没问题的,可能需要您那边升级看一下

请您把W改为别的数字验证,最后一位除了是X外,其他字母验证都不通过。您用数字验证。比如把W改为任意数字,还验证吗?
回复 使用道具 举报
Joe.xu讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2022-6-10 16:21:33
19#
沉木主人 发表于 2022-6-10 15:39
自带的个人身份证正则表达式只验证长度(6.0.103版本),根本不验证第18位。

我在6.0.104/7.0.104版本验证了一下,校验是没问题的,可能需要您那边升级看一下






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
沉木主人
初级会员   /  发表于:2022-6-10 15:39:03
18#
Joe.xu 发表于 2022-6-6 10:32
您好,您好,麻烦重新发一个悬赏贴,这样对于后来学习的人,不会把问题搞混了,因为一个帖子只能设置一个 ...

自带的个人身份证正则表达式只验证长度(6.0.103版本),根本不验证第18位。
回复 使用道具 举报
Joe.xu讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2022-6-6 10:32:00
17#
沉木主人 发表于 2022-6-6 10:15
情况一样,我自己正确的身份证号输入,提示为非法值

您好,您好,麻烦重新发一个悬赏贴,这样对于后来学习的人,不会把问题搞混了,因为一个帖子只能设置一个最佳,,对于您以后自己找这个问题的答案,都比较方便的,感谢您的支持~
我们现在的数据校验自带身份证哦

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部