Java 验证 输入身份证号码号码 是否合法 新手学习java 请各位大虾帮忙解决问题! 谢谢!身份证号码 是以什么规律排的,只知道 前面六位是 地区段,中间为 生日,后面四位就不知道了··分别用 字符串验证 的方法实现, 和 正则表达式 实现验证。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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循环,比较数组中的元素 我最近做过这个,把我做的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> 你要是看不懂JavaScript,我一会把我整个页面代码给你,包括表单,你自己看看 这里面有一个算法的,下面是我以前用的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; } 不好意思,var flag=checkIDCard1(str);这个是一个正则校验,你用楼上说的就行了。 Socket的accept()问题。没客户端也运行! 链表问题,我自己写的deletLast方法为什么不行 关于JPanel的repaint问题 我是一个编程初学者,想请教高手们一个关于java的问题 ByteArrayOutputStream写入问题,字符丢了 求一正则表达式,清高手解答立即散分 关于如何处理时间的问题 如果数据库的索引存储结构是应用JAVA数据结构,会怎样呢? 如何使用Java语言确定日期的准确性? 关于TreeSet集合框架无法添加自定义对象的问题. java序列化大量对象的问题 有关JAVA 线程挂起,通知的一个问题
用字符串比较就是用一个for循环,比较数组中的元素
<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>
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;
}