身份证号的正则表达式怎么写

在中国,一个标准的身份证号(通常是18位,但也有旧式的15位)包含数字和可能的校验码(X代表数字10)。下面是一个用于匹配这两种格式的正则表达式:

对于18位身份证号(包括X作为校验码):

const idCardRegex = /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}(\d|X|x)$/;

这个正则表达式的解释如下:

  • ^[1-9]\d{5}:前6位数字,第1位不能为0。
  • (18|19|20)\d{2}:年份,可以是18xx、19xx或20xx。
  • ((0[1-9])|(10|11|12)):月份,可以是01-12。
  • (([0-2][1-9])|10|20|30|31):日期,可以是01-31(注意:这里没有考虑每个月的实际天数,只是一个简单的匹配)。
  • \d{3}:顺序码,3位数字。
  • (\d|X|x)$:校验码,可以是0-9的数字或X/x。

但请注意,这个正则表达式并没有完全验证身份证号的合法性,只是简单地匹配了格式。真正的身份证号验证还需要进行更复杂的校验码计算。

如果你需要更完整的验证(包括校验码的计算),你可能需要编写一个更复杂的函数,而不是仅仅使用正则表达式。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值