正则表达式判断18位身份证,该怎么处理

 我来答
初来乍到1102
推荐于2018-04-20 · 超过38用户采纳过TA的回答
知道小有建树答主
回答量:58
采纳率:0%
帮助的人:44.9万
展开全部

如果只是简单判断 r = /^(\d{18}|\d{17}x)$/;(只需要判断18位数字活着17位数字+一位x)

如果想写的复杂点,就需要根据身份证上每一位数字的含义去写对应的规则。比如生日那部分。只能是生日区间的数字。

如果判断的准确无误,去找公安局或者其他官方的对外验证真伪的接口。

小伙子,我看你骨骼惊奇,是万年难遇的练武奇才,我这里有一本30分钟速成神功宝典。有兴趣就拿去


思念是一种醉过
高粉答主

2018-04-18 · 每个回答都超有意思的
知道大有可为答主
回答量:224
采纳率:100%
帮助的人:3.9万
展开全部

处理方法:

如果只是简单判断 r = /^(\d{18}|\d{17}x)$/,只需要判断18位数字活着17位数字+一位x。

1、介绍:

xxxxxx yyyy MM dd 375 0     十八位

xxxxxx    yy MM dd   75 0     十五位

2、地区: [1-9]\d{5}

3、年的前两位: (18|19|([23]\d)) 

4、年的后两位: \d{2}

5、月份: ((0[1-9])|(10|11|12)) 

6、天数: (([0-2][1-9])|10|20|30|31)

7、三位顺序码: \d{3}

8、两位顺序码: \d{2}

9、校验码: [0-9Xx]

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
孤狂魂
2018-04-19
知道答主
回答量:8
采纳率:0%
帮助的人:6810
展开全部
想用一个非常简短的正则表达式来验证身份证的可以歇歇了,因为需要判断的条件太多。就中间日期的判断就不可能用那种印象中超短的正则表达式来写。
本来想找个现成的,结果没有一个令人满意的,大多写出来的效果基本上也就是证明了是一个18位的数字并且最后一位可以是X。
这样敷衍的东西完全满足不了一个万劫不复的强迫症患者。于是我自己写了一个,虽然不算好,但是和现其他身份证的正则相比正确率绝对不在一个等级。
因为太长估计你看了也不一定还会用。但发布出来是我的事情。因为我正在进化的强迫症!
本身份证正则表达式仅可以验证1900年——2099年二代身份证,并且单条无法验证平年和闰年。因为不太喜欢\d所以里面全部使用了[0-9]
闰年:
regex1=/^([1][1-5]|[2][1-3]|[3][1-7]|[4][1-6]|[5][0-4]|[6][1-5])([1-6][0-9]|[7][0])([0,1][0-8]|[2-9][0-9])(([1][9]|[2][0])[0-9]{2})(((([0][1,3,5,7,8]|[1][0,2])([0][1-9]|[1-2][0-9]|[3][0-1])))|(([0][2]([0][1-9]|[1][0-9]|[2][0-9])))|((([0][4,6,9]|[1][1])([0][1-9]|[1-2][0-9]|[3][0]))))([0-9]{3}([0-9]|X|x))$/;
平年:
regex2=/^([1][1-5]|[2][1-3]|[3][1-7]|[4][1-6]|[5][0-4]|[6][1-5])([1-6][0-9]|[7][0])([0,1][0-8]|[2-9][0-9])(([1][9]|[2][0])[0-9]{2})(((([0][1,3,5,7,8]|[1][0,2])([0][1-9]|[1-2][0-9]|[3][0-1])))|(([0][2]([0][1-9]|[1][0-9]|[2][0-8])))|((([0][4,6,9]|[1][1])([0][1-9]|[1-2][0-9]|[3][0]))))([0-9]{3}([0-9]|X|x))$/;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式