新手学习java 请各位大虾帮忙解决问题! 谢谢!身份证号码 是以什么规律排的,只知道 前面六位是 地区段,中间为 生日,后面四位就不知道了··分别用 字符串验证 的方法实现, 和 正则表达式 实现验证。

解决方案 »

  1.   

    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循环,比较数组中的元素
      

  2.   

    我最近做过这个,把我做的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>
      

  3.   

    你要是看不懂JavaScript,我一会把我整个页面代码给你,包括表单,你自己看看
      

  4.   

    这里面有一个算法的,下面是我以前用的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;

      

  5.   

    不好意思,var flag=checkIDCard1(str);这个是一个正则校验,你用楼上说的就行了。