Java 验证 输入身份证号码号码 是否合法

army86 2010-04-09 04:20:08
新手学习java 请各位大虾帮忙解决问题! 谢谢!

身份证号码 是以什么规律排的,只知道 前面六位是 地区段,中间为 生日,后面四位就不知道了··

分别用 字符串验证 的方法实现, 和 正则表达式 实现验证。。。。
...全文
595 9 打赏 收藏 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
army86 2010-04-13
  • 打赏
  • 举报
回复
谢谢各位了~~!!!
liuzhengyizenith 2010-04-11
  • 打赏
  • 举报
回复
<%@ page contentType="text/html; charset=gb2312" %>
<HTML>
<HEAD>
<TITLE>验证身份证号码</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<link href="css/style.css" rel="stylesheet">
</HEAD>

<body>
<script language="javascript">
function check(myform){
if(myform.number.value==""){
alert("请输入身份证号码地址!");myform.number.focus();return;
}
if(!checkeNO(myform.number.value)){
alert("您输入的身份证号码不正确!");myform.number.focus();return;
}
myform.submit();
}
function checkeNO(NO){
var str=NO;
//在JavaScript中,正则表达式只能使用"/"开头和结束,不能使用双引号
var Expression=/\d{17}[\d|X]|\d{15}/;
var objExp=new RegExp(Expression);
if(objExp.test(str)==true){
return true;
}else{
return false;
}
}
</script>
<FORM name="form1" action="" method="post">
<TABLE cellSpacing=0 cellPadding=0 width=538 align=center border=0>
<TR>
<TD width="548" height=29><SPAN class=style15>  欢迎光临<A
href="index.jsp">Go购电子商城</A>----<A
href="#">会员注册 </A>>>>> </SPAN></TD>
</TR>
<TR>
<TD>
<TABLE width="100%" height="195" border=1 align=center cellPadding=0 cellSpacing=0>

<TR bgColor=#efefef>
<TD height="25" colSpan=2 class=tablebody1><STRONG> 用户基本资料</STRONG></TD></TR>
<TR>
<TD width="20%" align="center" class=tablebody1>用 户 名: <BR></TD>
<TD height="24" class="tablebody1">  <INPUT class=wenbenkuang maxLength=10 size=30
name=name> 注册用户名长度限制为0-10字节 </TD>
</TR>
<TR>
<TD align="center" class=tablebody1>性    别: <BR></TD>
<TD height="24" class=tablebody1><INPUT type=radio CHECKED value=男 name=sex>男
<INPUT type=radio value=女 name=sex>女
                
请选择您的性别 </TD>
</TR>
<TR>
<TD width="20%" align="center" class=tablebody1>密    码: <BR></TD>
<TD height="24" class=tablebody1>  <INPUT class=wenbenkuang type=password
maxLength=16 size=30 name=psw>
请输入密码,区分大小写 </TD>
</TR>
<TR>
<TD width="20%" align="center" class=tablebody1>确认密码: <BR></TD>
<TD height="24" class=tablebody1>  <INPUT class="wenbenkuang" type="password"
maxLength="16" size="30" name="pswc"> 请再输一遍确认 </TD>
</TR>
<TR>
<TD align="center" class=tablebody1>Email: <BR></TD>
<TD height="24" class=tablebody1>  <INPUT class="wenbenkuang" maxLength="50" size=30
name="e_mail"> 请输入有效的邮件地址 </TD>
</TR>
<TR>
<TD
height=21 align="center" vAlign=center class=tablebody1>身份证号码:</TD>
<TD class=tablebody1 align=left height=24>  <input class=wenbenkuang id=number maxlength=15 size=18 name=number> <SPAN
class=style11>*</SPAN> </TD>
</TR>
<TR>
<TD align="center" vAlign=center class=tablebody1>联系电话:</TD>
<TD class=tablebody1 align=left width="80%" height=24> 
<INPUT class=wenbenkuang maxLength=15 size=18 name=userphone></TD>
</TR></TABLE>
<BR>
<div align=center><INPUT class="go-wenbenkuang" type="button" value="注 册" name="Submit" onClick="check(form1)">
(<SPAN class=style11>*</SPAN> 为必填项目) <INPUT class=go-wenbenkuang type=reset value="重 置" name=Submit2>
</div></TD></TR></TABLE></FORM>
</body></html>
liuzhengyizenith 2010-04-11
  • 打赏
  • 举报
回复
你要是看不懂JavaScript,我一会把我整个页面代码给你,包括表单,你自己看看
liuzhengyizenith 2010-04-11
  • 打赏
  • 举报
回复
我最近做过这个,把我做的JS代码给你吧
<script language="javascript">
function check(myform){
if(myform.number.value==""){
alert("请输入身份证号码地址!");myform.number.focus();return;
}
if(!checkeNO(myform.number.value)){
alert("您输入的身份证号码不正确!");myform.number.focus();return;
}
myform.submit();
}
function checkeNO(NO){
var str=NO;
//在JavaScript中,正则表达式只能使用"/"开头和结束,不能使用双引号
var Expression=/\d{17}[\d|X]|\d{15}/;
var objExp=new RegExp(Expression);
if(objExp.test(str)==true){
return true;
}else{
return false;
}
}
</script>
jdjf020826 2010-04-11
  • 打赏
  • 举报
回复
1~6位为地区代码,其中1、2位数为各省级政府的代码,3、4位数为地、市级政府的代码,5、6位数为县、区级政府代码。如13(河北省)04(邯郸市)29(永年县)

7~14位为出生年月日

15~17位为顺序号,是县、区级政府所辖派出所的分配码,每个派出所分配码为10个连续号码,例如“000-009”或“060-069”,其中单数为男性分配码,双数为女性分配码,如遇同年同月同日有两人以上时顺延第二、第三、第四、第五个分配码。如:007的就是个男生 而且和他同年月日生的男生至少有两个 他们的后四位是001* 和 003*

18位为效验位(识别码),通过复杂公式算出,普遍采用计算机自动生成。是前面17位的一种检验代码,如果你改变了前面某个数字而后面的效验代码不响应改变就会被计算软件判断为非法身份正号码。X也是效验代码的一中

15位的身份证号码:

(1)1~6位为地区代码

(2)7~8位为出生年份(2位),9~10位为出生月份,11~12位为出生日期

(3)第13~15位为顺序号,并能够判断性别,奇数为男,偶数为女。

按你的要求:正则表达式:"^\\d[18]$"
用字符串比较就是用一个for循环,比较数组中的元素
zuoguodang 2010-04-11
  • 打赏
  • 举报
回复
不好意思,var flag=checkIDCard1(str);这个是一个正则校验,你用楼上说的就行了。
zuoguodang 2010-04-11
  • 打赏
  • 举报
回复
这里面有一个算法的,下面是我以前用的js代码

function checkIDCard(str){
var flag=checkIDCard1(str);
var w = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1);
var a = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
var i=0,j,S=0;
if(!flag){
return false;
}else{
if(str.length==15){
str=str.substr(0,6)+"19"+str.substr(6,14);
}
for(i=0;i<17;i++){
j = parseInt(str.substring(i, i+1)) * w[i];
S = S + j;
}
S=S%11;
}
if(str.substr(17,18)!=null&&str.substr(17,18)!=""&&str.substr(17,18)!=a[S]){
flag=false;
}
return flag;
}
  • 打赏
  • 举报
回复
最多也只能判断一下这个身份证号码格式是否正确、校验位是否正确。至于是否合法,那是做不到的。
  • 打赏
  • 举报
回复
你无法判断身份证号码是否合法,因为你没有公民身份信息库

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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