如何写身份证的正则表达式?请各为看看以下为啥不对?

zrmwx 2004-10-18 10:35:19
15位或18位,注 18位中最后一位为校验位。
(\d{15})|(\d{17}[\w])

输入15位数字正确,17位数字加字符不正确。请指教!
...全文
183 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yt_net 2004-10-19
  • 打赏
  • 举报
回复
mark
lonelydreamsym 2004-10-19
  • 打赏
  • 举报
回复
学习
活靶子哥哥 2004-10-19
  • 打赏
  • 举报
回复

合理的身份证验证应该还要验证道中间的生日为正确的时间
比如
61032619999999161X也是错误的 没有19999999这样的生日
zrmwx 2004-10-19
  • 打赏
  • 举报
回复
你好,我目前不想校验输入的信息完全合法,我只想在位数上进行简单的校验,请问如何写正则表达式
saucer 2004-10-19
  • 打赏
  • 举报
回复
>>18位中最后一位为校验位

这最后一位是什么?数字还是字符


<script>
re = /^((\d{15})|(\d{17}[\w]))$/;

var s= ["012345678901234","0123456789012345","01234567890123456","012345678901234567","01234567890123456x"];
for (var i=0; i < s.length; i++)
alert(s[i] + "\n:" + re.test(s[i]));

</script>
jkflyfox 2004-10-18
  • 打赏
  • 举报
回复
我知道身份证号的最后一位可能是字符,至少我见过最后一位为X的。
如果只是简单的理解为15位数字或18位数字或14位数字加1位字符或17位数字加1位字符,这个不难,但是实际上身份证里自己带有一个类似crc验证的机制,具体的记不清了,如果要写出这种正则表达式,才是复杂的事。

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧