身份证,电话等校验

//个人身份证
function checkEnergyCard(self){
    var allowancePersonValue= $(self).val();
    //是否为空
    if(allowancePersonValue==""){
        MS.messShow("身份证不能为空");
        return false;
    }else if(isCardNo(allowancePersonValue) === false){
        //校验长度,类型
        MS.messShow("您输入的身份证号码不正确,请重新输入");
        return false;
    }else if(checkProvince(allowancePersonValue) === false){
        //检查省份
        MS.messShow("您输入的身份证号码不正确,请重新输入");
        return false;
    }else if(checkBirthday(allowancePersonValue) === false){
        //校验生日
        MS.messShow("您输入的身份证号码生日不正确,请重新输入");
        return false;
    }else if(checkParity(allowancePersonValue) === false){
        //检验位的检测
        MS.messShow("您的身份证校验位不正确,请重新输入");
        return false;
    }else{
        return true;
    }
}

//身份证省的编码
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 isCardNo(card){
    //身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X
     var reg = /(^\d{15}$)|(^\d{17}(\d|X)$)/;
     if(reg.test(card) === false){
        return false;
     }
     return true;
}

//取身份证前两位,校验省份
function checkProvince(card){
    var province = card.substr(0,2);
    if(vcity[province] == undefined){
        return false;
    }
    return true;
}

//检查生日是否正确
function checkBirthday(card){
    var len = card.length;
     //身份证15位时,次序为省(3位)市(3位)年(2位)月(2位)日(2位)校验位(3位),皆为数字
     if(len == ‘15‘){
        var re_fifteen = /^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/;
        var arr_data = card.match(re_fifteen);
        var year = arr_data[2];
        var month = arr_data[3];
        var day = arr_data[4];
        var birthday = new Date(‘19‘+year+‘/‘+month+‘/‘+day);
        return verifyBirthday(‘19‘+year,month,day,birthday);
     }
     //身份证18位时,次序为省(3位)市(3位)年(4位)月(2位)日(2位)校验位(4位),校验位末尾可能为X
     if(len == ‘18‘){
        var re_eighteen = /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/;
        var arr_data = card.match(re_eighteen);
        var year = arr_data[2];
        var month = arr_data[3];
        var day = arr_data[4];
        var birthday = new Date(year+‘/‘+month+‘/‘+day);
        return verifyBirthday(year,month,day,birthday);
     }
     return false;
}

//校验日期
function verifyBirthday(year,month,day,birthday){
    var now = new Date();
    var now_year = now.getFullYear();
    //年月日是否合理
    if(birthday.getFullYear() == year && (birthday.getMonth() + 1) == month && birthday.getDate() == day){
        //判断年份的范围(3岁到100岁之间)
        var time = now_year - year;
        if(time >= 3 && time <= 100){
            return true;
        }
        return false;
    }
    return false;
}

//校验位的检测
function checkParity(card){
    //15位转18位
    card = changeFivteenToEighteen(card);
    var len = card.length;
    if(len == ‘18‘){
        var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
        var arrCh = new Array(‘1‘, ‘0‘, ‘X‘, ‘9‘, ‘8‘, ‘7‘, ‘6‘, ‘5‘, ‘4‘, ‘3‘, ‘2‘);
        var cardTemp = 0, i, valnum;
        for(i = 0; i < 17; i ++){
            cardTemp += card.substr(i, 1) * arrInt[i];
        }
        valnum = arrCh[cardTemp % 11];
        if (valnum == card.substr(17, 1)){
            return true;
        }
        return false;
    }
    return false;
}

//15位转18位身份证号
function changeFivteenToEighteen(card){
    if(card.length == ‘15‘){
        var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
        var arrCh = new Array(‘1‘, ‘0‘, ‘X‘, ‘9‘, ‘8‘, ‘7‘, ‘6‘, ‘5‘, ‘4‘, ‘3‘, ‘2‘);
        var cardTemp = 0, i;
        card = card.substr(0, 6) + ‘19‘ + card.substr(6, card.length - 6);
        for(i = 0; i < 17; i ++){
            cardTemp += card.substr(i, 1) * arrInt[i];
        }
        card += arrCh[cardTemp % 11];
        return card;
    }
    return card;
}

//校验银行卡
function luhmCheck(bankno){
    if(bankno==""||bankno==null){
        MS.messShow("请输入银行卡");
        return false;
    }
  var lastNum=bankno.substr(bankno.length-1,1);

var first15Num=bankno.substr(0,bankno.length-1);
  var newArr=new Array();
  for(var i=first15Num.length-1;i>-1;i--){
      newArr.push(first15Num.substr(i,1));
  }
  var arrJiShu=new Array();
  var arrJiShu2=new Array();

var arrOuShu=new Array();
  for(var j=0;j<newArr.length;j++){
      if((j+1)%2==1){
          if(parseInt(newArr[j])*2<9)
          arrJiShu.push(parseInt(newArr[j])*2);
          else
          arrJiShu2.push(parseInt(newArr[j])*2);
      }
      else
      arrOuShu.push(newArr[j]);
  }

var jishu_child1=new Array();
  var jishu_child2=new Array();
  for(var h=0;h<arrJiShu2.length;h++){
      jishu_child1.push(parseInt(arrJiShu2[h])%10);
      jishu_child2.push(parseInt(arrJiShu2[h])/10);
  }

var sumJiShu=0;
  var sumOuShu=0;
  var sumJiShuChild1=0;
  var sumJiShuChild2=0;
  var sumTotal=0;
  for(var m=0;m<arrJiShu.length;m++){
      sumJiShu=sumJiShu+parseInt(arrJiShu[m]);
  }

for(var n=0;n<arrOuShu.length;n++){
      sumOuShu=sumOuShu+parseInt(arrOuShu[n]);
  }

for(var p=0;p<jishu_child1.length;p++){
      sumJiShuChild1=sumJiShuChild1+parseInt(jishu_child1[p]);
      sumJiShuChild2=sumJiShuChild2+parseInt(jishu_child2[p]);
  }
  sumTotal=parseInt(sumJiShu)+parseInt(sumOuShu)+parseInt(sumJiShuChild1)+parseInt(sumJiShuChild2);

var k= parseInt(sumTotal)%10==0?10:parseInt(sumTotal)%10;
  var luhm= 10-k;

if(lastNum==luhm){
         return true;
  }
  else{
      MS.messShow("银行卡输入不正确");
      return false;
  }
}

//手机号 验证
function checkPhoneNo(self) {
    var val = $(self).val();
    var cellPhone = /^((\+86)?|\(\+86\))0?1[3578]\d{9}$/;
    if (val == ‘‘ || val == null) {
        MS.messShow("请输入您的手机号!");
        return false;
    } else if (!cellPhone.test(val)) {
        MS.messShow("请输入正确的手机号!");
        return false;
    } else if (val.length > 11) {
        MS.messShow("请输入正确的手机号!");
        return false;
    }
    return true;
}

//密码 验证
function checkPassword(self) {
    var pwd = $(self).val();
    if (pwd == "" || pwd == null) {
        MS.messShow("密码不能为空!");
        return false;
    } else if (pwd.length < 8 || pwd.length > 20) {
        MS.messShow("密码长度为8-20位!");
        return false;
    } else if (/^[\d]*$|[\s]+/.test(pwd) | /^([a-zA-Z]+)$/.test(pwd)) {
        MS.messShow("密码不能是纯数字或纯字母,不能包含空格!");
        return false;
    }
    var pat = /^(?=[[email protected]#$%^&*()_+{}|:"<>?`\-=[\]\\;‘,\./]*?[A-Za-z])(?=[[email protected]#$%^&*()_+{}|:"<>?`\-=[\]\\;‘,\./]*?[0-9])[[email protected]#$%^&*()_+{}|:"<>?`\-=[\]\\;‘,\./]{8,20}$/;
    if (!pat.test(pwd)) {
        MS.messShow("密码仅允许键盘可见特殊字符");
        return false;
    }
    var pattern1 = new RegExp("[0-9]");
    var pattern2 = new RegExp("[a-z]");
    var pattern3 = new RegExp("[A-Z]");
    var pattern4 = new RegExp(
            "[`[email protected]#$^&*()=|{}‘:;‘,\\[\\].<>/?~!@#¥……&*()——|{}【】‘;:”“‘。,、?]");
    var num = 0;
    if (pattern1.test(pwd)) {
        num++;
    }
    if (pattern2.test(pwd)) {
        num++;
    }
    if (pattern3.test(pwd)) {
        num++;
    }
    if (pattern4.test(pwd)) {
        num++;
    }
    if (num < 2) {
        MS.messShow("您的密码级别太低!");
        return false;
    }

// num=2 弱; num=3 中; num=4 强;

return true;
}

//密码 验证   添加弱中强显示
function checkPassAdd(self) {
    var pwd = $(self).val();
    var pattern1 = new RegExp("[0-9]");
    var pattern2 = new RegExp("[a-z]");
    var pattern3 = new RegExp("[A-Z]");
    var pattern4 = new RegExp(
            "[`[email protected]#$^&*()=|{}‘:;‘,\\[\\].<>/?~!@#¥……&*()——|{}【】‘;:”“‘。,、?]");
    var num = 0;
    if (pattern1.test(pwd)) {
        num++;
    }
    if (pattern2.test(pwd)) {
        num++;
    }
    if (pattern3.test(pwd)) {
        num++;
    }
    if (pattern4.test(pwd)) {
        num++;
    }

// num=2 弱; num=3 中; num=4 强;
    return num;
}

function checkName(self){
    var nkName = $(self).val();
    if (nkName == "" || nkName == null) {
        MS.messShow("用户名不能为空!");
        //$(self).val("用户名不能为空!");
        //$(self).attr("placeholder", "用户名不能为空!");
        return false;
    }else if(nkName.length<6){
        MS.messShow("用户名长度过短!");
        //$(self).val("用户名长度过短!");
        //$(self).attr("placeholder", "用户名长度过短!");
        return false;
    }else if(nkName.length>32){
        MS.messShow("用户名长度过长!");
        return false;
    }else if(nkName.match("^[\\d]")){
        MS.messShow("用户名不能以数字开头!");
        return false;
    }else if(!nkName.match("^[a-zA-Z0-9_]+$")){
        MS.messShow("用户名只能包含字母、数字和‘_‘!");
        return false;
    }
    return true;
}

//adit by lxq 将美元符号转成元
function toformartAmountRe(amount){
    var toAmount = amount/10000
    toAmount = formatMoney(toAmount,2,‘‘);
    return toAmount;
}

//adit by lxq 将美元符号转成元
function formatMoney(number, places, symbol, thousand, decimal) {
    number = number || 0;
    places = !isNaN(places = Math.abs(places)) ? places : 2;
    symbol = symbol !== undefined ? symbol : "$";
    thousand = thousand || ",";
    decimal = decimal || ".";
    var negative = number < 0 ? "-" : "",
        i = parseInt(number = Math.abs(+number || 0).toFixed(places), 10) + "",
        j = (j = i.length) > 3 ? j % 3 : 0;
    return   negative + (j ? i.substr(0, j) + thousand : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + thousand) + (places ? decimal + Math.abs(number - i).toFixed(places).slice(2) : "")+symbol;
}

时间: 2024-11-10 06:34:33

身份证,电话等校验的相关文章

Java进行身份证格式强校验(准)

最近做了一个系统,涉及到对用户输入的身份证号进行校验,减少脏数据传入后台处理并降低企业验证成本,因此在接入层便对输入信息做格式强校验. 直接附上代码,可直接使用. 1 package hope.identitycodecheck.demo; 2 3 import java.text.DateFormat; 4 import java.text.SimpleDateFormat; 5 import java.util.Date; 6 /** 7 * 8 * @author hp 9 * 10 *

iOS开发实用技巧—身份证的正则校验

iOS开发实用技巧—身份证的正则校验 说明: 在ios项目的开发中可能很多地方都需要用到身份证校验,一般在开发的时候很多人都是直接百度去网上荡相关的正则表达式和校验代码,但是网上疯狂粘贴复制的校验代码本身也可能并不准确,可能会有风险,比如2013年1月1号起停止使用15位的身份证,网上的身份证校验普遍支持15位的号码. 在开发过程中,进行类似处理的时候,还是需要一些甄别的能力的,当然也要考虑自己的项目的实际情况.该文贴出了最近项目中使用到得身份证校验代码,以方便有需要的人“谨慎”获取. 一.规则

iOS—身份证的正则校验

iOS—身份证的正则校验 说明: 在ios项目的开发中可能很多地方都需要用到身份证校验,一般在开发的时候很多人都是直接百度去网上荡相关的正则表达式和校验代码,但是网上疯狂 粘贴复制的校验代码本身也可能并不准确,可能会有风险,比如2013年1月1号起停止使用15位的身份证,网上的身份证校验普遍支持15位的号码. 在开发过程中,进行类似处理的时候,还是需要一些甄别的能力的,当然也要考虑自己的项目的实际情况.该文贴出了最近项目中使用到得身份证校验代码,以方便有需要的人“谨慎”获取. 一.规则 下面是i

固定电话的校验

在写项目中,表单验证中常会遇见"手机号或者电话号码"的校验,今天这里主要说的是电话号码的校验. (1)HTML部分 <div class="test8 txt-com "> <input id="StoreAddTxt21-2" class="test8-2 shopAdd-gddh" name="txt16Name2" type="text" onblur="

身份证号正则校验(js校验+JAVA校验)

js校验身份证号[15位和18位] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 8

身份证 、银行卡校验

/*根据[中华人民共和国国家标准 GB 11643-1999]中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码.    地址码表示编码对象常住户口所在县(市.旗.区)的行政区划代码.    出生日期码表示编码对象出生的年.月.日,其中年份用四位数字表示,年.月.日之间不用分隔符.    顺序码表示同一地址码所标识的区域范围内,对同年.月.日出生的人员编定的顺序号.

苏坤winform开发第16讲笔记(身份证校验)

效果: C#语法整型转字符串 C#转换有如下方法: 1. int num = Convert.ToInt32(字符串); string str= Convert.ToString(数字); (没有必要,不要用这种方法) 2.intnum = (int)字符串; string str = (string)数字; 3.就是你自己写的方法! inti=01232456; stringstri=""; stri=i.tostring(); 难点: 字符转整型时是可以用int(char)强制转换

二代身份证号码校验 Java版

未命名 import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.regex.Pattern;public class IdCardValidator {    public static void main(String[] args) {        System.out.printl

身份证校验原理和PHP实现

原文地址:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=21126994&id=3938244 关于身份证的校验算法问题 身份证15位升级到18位,原来年用2位且没有最后一位,从左到右方分别表示 ①1-2 升级行政区代码 ②3-4 地级行政区划分代码 ③5-6 县区行政区分代码 ④7-10 11-12 13-14 出生年.月.日 ⑤15-17 顺序码,同一地区同年.同月.同日出生人的编号,奇数是男性,偶数是女性 ⑥18 校验