验证身份证号码



//2014.08.26  20:18:15

// 身份证号码验证

身份证号码是18位数字,根据GB11643-1999《公民身份证》定义制作;由17位本体码和一位校验码组成。

身份证号码前6位是地址码,按(GB/T2260)规定执行。

接着8位是年、月、日。

后三位是同年同月同日出生的人的顺序号,奇数表示男,偶数表示女。

最后一位是校验码。

因此正则表达式验证模式为:/^d{17}(d|X)$/



<html>
<head>
<title>用正则表达式验证身份证的合法性</title>

<script type="text/javascript">
//验证身份证号
var vcity={ 11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",
     22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",
     35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",
     45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",
     61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",
     81:"香港",82:"澳门",91:"国外"};
function checkCard(){
	var isum=0;
	var re=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\ d{3}[A-Z])$/; 	var cardidstr=document.getElementById('cardid').value;
	if (cardidstr.length>0 && cardidstr!=null) {
		if(!re.test(cardidstr)) {
			alert("身份证号不符合要求!");
			return false;
    }
    //检查地址是否符合要求
    if(vcity[parseInt(cardidstr.substr(0,2))]==null) {
      alert("身份地址不符合要求!");
      return false;
    }
    //出生日期
  Sbirthday = cardidstr.substr(6,4) + "-" + cardidstr.substr(10,2)+"-"+ cardidstr.substr(12,2);
    alert('身份证地址:'+vcity[parseInt(cardidstr.substr(0,2))]+"\n"
    +"出生日期:"+sbirthday+"\n"+"性别:"+(cardidstr.substr(16,1)%2?"男":"女"));
  }
  else{
    alert("请输入身份证号!");
  }  
}
</script>

</head>

<body bgcolor="#FFCC99">
<form action="" method="get" name="myForm">
<table width="400" border="0" align="center" cellspacing="0" cellpadding="0">
	<caption align="center"><h2>验证身份证的合法性</h2></caption>
	<tr>
		<td width="214" align="right">身份证号:</td>
		<td width="186">
			<input type="text" name="cardid" size="18" />
		</td>
	</tr>
	<tr>
		<td colspan="2" align="center">
			<input name="check" type="button" id="check" value="检测身份证号" οnclick="checkCard()"/>
			<input name="reset" type="reset" id="reset" value="重置" />
		</td>
	</tr>
</table>
</form>
</body>

</html>



PS:该代码的实现效果有问题


//2014.08.26  20:18:15

// 身份证号码验证

身份证号码是18位数字,根据GB11643-1999《公民身份证》定义制作;由17位本体码和一位校验码组成。

身份证号码前6位是地址码,按(GB/T2260)规定执行。

接着8位是年、月、日。

后三位是同年同月同日出生的人的顺序号,奇数表示男,偶数表示女。

最后一位是校验码。

因此正则表达式验证模式为:/^d{17}(d|X)$/




<html>

<head>

<title>用正则表达式验证身份证的合法性</title>


<script type="text/javascript">

//验证身份证号

var vcity={ 11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",

     22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",

     35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",

     45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",

     61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",

     81:"香港",82:"澳门",91:"国外"};

function checkCard(){

var isum=0;

var re=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\ d{3}[A-Z])$/;  var cardidstr=document.getElementById('cardid').value;

if (cardidstr.length>0 && cardidstr!=null) {

if(!re.test(cardidstr)) {

alert("身份证号不符合要求!");

return false;

    }

    //检查地址是否符合要求

    if(vcity[parseInt(cardidstr.substr(0,2))]==null) {

      alert("身份地址不符合要求!");

      return false;

    }

    //出生日期

  Sbirthday = cardidstr.substr(6,4) + "-" + cardidstr.substr(10,2)+"-"+ cardidstr.substr(12,2);

    alert('身份证地址:'+vcity[parseInt(cardidstr.substr(0,2))]+"\n"

    +"出生日期:"+sbirthday+"\n"+"性别:"+(cardidstr.substr(16,1)%2?"男":"女"));

  }

  else{

    alert("请输入身份证号!");

  }  

}

</script>


</head>


<body bgcolor="#FFCC99">

<form action="" method="get" name="myForm">

<table width="400" border="0" align="center" cellspacing="0" cellpadding="0">

<caption align="center"><h2>验证身份证的合法性</h2></caption>

<tr>

<td width="214" align="right">身份证号:</td>

<td width="186">

<input type="text" name="cardid" size="18" />

</td>

</tr>

<tr>

<td colspan="2" align="center">

<input name="check" type="button" id="check" value="检测身份证号" οnclick="checkCard()"/>

<input name="reset" type="reset" id="reset" value="重置" />

</td>

</tr>

</table>

</form>

</body>


</html>


PS:该代码的实现效果有问题


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值