javascript 身份证验证及自动设置性别和年龄

本文介绍如何在JavaScript中实现对18位身份证的输入限制,并根据身份证号码解析出对应省份、城市、区县、出生日期、性别信息。通过正则表达式确保输入的身份证号码合法,并自动计算和设置性别与年龄。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

监控页面上身份证填写数值,利用正则限制填写仅为18位的身份证;

简单介绍身份证数字含义:1.前两位数字-省份代码;

                                         2.第3-4位-城市代码;

                                         3.第5-6位-区县代码;

                                         4.第7-14位-出生年月日;

                                         5.第15-17位-同一地址码所标示的区域范围内同年同月同日生人编订的顺序码;

                                         6.第17位-性别-奇数:男性;偶数:女性;

                                         7.最后一位-校验码,可为1-9或X。

this.watch("people_ID",lang.hitch(this,this.AgeSet)); 


AgeSet: function( elem )
{
//var reg = elem.controlDefinition.attr.validationPattern;    
/*如果在控件上已标定可以这么使用,否则直接在code上注明正则*/
var reg = "^[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]$";
var r = elem.getValue().match(reg);
if ( r !==  null)
{
	 birth = elem.getValue().substring(6,10)+"-"+elem.getValue().substring(10,12)+"-"+elem.getValue().substring(12,14);
     gender = parseInt(elem.getValue().substr(16, 1)%2);
    if ( gender == 1)  //set gender
		{
			this.byId("selectOne_gender").setValue("男");
		}
	else
		{
			this.byId("selectOne_gender").setValue("女");
		}
//console.info("gender:",gender)
	var today = new Date();
	var month = today.getMonth() + 1;  //new Date().getMonth是比实际小一个月的
	var day = today.getDate(); 
	var age = today.getFullYear() - elem.getValue().substring(6,10) -1;
	if ( elem.getValue().substring(10,12) <= month && elem.getValue().substring(12,14)<= day)
		{
			age++;
			this.byId("people_age").setValue(age);
         }
	else
		{
			this.byId("people_age").setValue(null);
		}
            
},







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值