帐号,密码,手机,邮箱,姓名较验工具类

/**
 * Created by zzw on 2016/8/5.
 * 数据校验框架validation.js
 */

var Validation = (function(){
    /**
     * 0 表示为校验不通过(为空,正则校验不通过)   1 表示校验通过
     * msg 向页面返回校验的结果信息
     * @type {{msg: string, state: number}}
     * @User zzw
     * @Time 2016.08.10
     */
     var result = {"msg":"输入合法","state":1};

    //帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线)
     var userName = /^[a-zA-Z][a-zA-Z0-9_]{4,15}$/;

    //密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线)
     var paw = /^[a-zA-Z]\w{5,17}$/;

    //校验手机
    var mobileReg = /^1[3|4|5|8|7][0-9]{9}$/;

    //校验邮箱
    var email = /^[a-z0-9]+([._\\-]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/;

    //校验真实姓名
    var realName = /^[\da-zA-Z\u4E00-\u9FA5]{1,10}$/;
    //校验字符串中是否含有中文
    //var isExitCh = /^[\u4e00-\u9fa5]/;
    var isExitCh = new RegExp("[\\u4E00-\\u9FFF]+","g");

    //校验是否为空
    function isNull(values){
          if(values==""||values==null){
              return false;
          }
        return true;
    }

    //特殊字符正则
    var spechaReg = /[`,~,!,@,#,$,%,^,&,*,\(,),\[,\],{,},\|,:,;,',",<,>,+,-,!,@,#,¥,%,……,*,(,),\【,\】,{,},\|,:,;,‘,’,“,”,《,》,,,。,\s]/;

    //身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X
    var IDCardReg1 = /(^\d{15}$)|(^\d{17}(\d|X)$)/;
    //身份证15位时,次序为省(3位)市(3位)年(2位)月(2位)日(2位)校验位(3位),皆为数字
    var re_fifteen = /^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/;
    //身份证18位时,次序为省(3位)市(3位)年(4位)月(2位)日(2位)校验位(4位),校验位末尾可能为X
    var re_eighteen = /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/;
    //身份证校验
    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 : "国外"
    };
    //身份证号码验证

        //检查号码是否符合规范,包括长度,类型
        var isCardNo = function(card) {
            if (IDCardReg1.test(card) === false) {
                return false;
            }

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

        //检查生日是否正确
        var checkBirthday = function(card) {
            var len = card.length;
            //身份证15位时,次序为省(3位)市(3位)年(2位)月(2位)日(2位)校验位(3位),皆为数字
            if (len == '15') {
                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 this.verifyBirthday('19' + year, month, day, birthday);
            };
            //身份证18位时,次序为省(3位)市(3位)年(4位)月(2位)日(2位)校验位(4位),校验位末尾可能为X
            if (len == '18') {
                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;
        };
        //校验日期
        var verifyBirthday = function(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;
        };
        //校验位的检测
    var checkParity = function(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位身份证号
    var changeFivteenToEighteen = function(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;
    };
    return{
        //校验是否含有特殊字符
       existSpecialCharacter:function(str){
           if(spechaReg.test(str)){
               return {"msg":"不能包含特殊字符","state":0};
           }
           return result;
       },

        //校验手机
        checkMobileNo:function(_mobileNo){
            debugger;
            if(!isNull(_mobileNo)){
                return {"msg":"手机号码不能为空","state":0};
            }
            if(!mobileReg.test(_mobileNo)){
                return {"msg":"手机号格式不正确","state":0};
            }
             return {"msg":"输入合法","state":1};
        },

        //校验用户名
        checkUserName:function(_username){
            if(!isNull(_username)){
                return {"msg":"用户名不能为空","state":0};
            }
            if(!userName.test(_username)){
                return {"msg":"用户名必须由为字母开头,允许5~16字节,字母数字或下划线组成","state":0};
            }
            return result;
        },

        //校验真实姓名
        checkRealName:function(_realName){
            if(!isNull(_realName)){
                return {"msg":"真实姓名不能为空","state":0};
            }
            if(!realName.test(_realName)){
                return {"msg":"姓名不存在,或格式有误,请重新输入。","state":0};
            }
            return result;
        },

        //校验密码
        checkPaw:function(_paw){
            if(!isNull(_paw)){
                return {"msg":"密码不能为空","state":0};
            }
            if(!paw.test(_paw)){
                return {"msg":"密码必须由字母开头,长度在6~18之间,字母、数字和下划线组成","state":0};
            }
            return result;
        },

        //校验邮箱
        checkEmail:function(_email){
            if(!isNull(_email)){
                return {"msg":"邮箱不能为空","state":0};
            }
            if(!paw.test(_email)){
                return {"msg":"邮箱不符合规范","state":0};
            }
            return result;
        },

        //校验字符串是否包含中文
        checkIsExitZh:function(_str){
            if(isExitCh.test(_str)){
                return {"msg":"字符串中含有中文","state":0};
            }
            return result
        },

        //校验身份证号
        checkIdentificationCard:function(_idCard){
            if(!isNull(_idCard)){
                return {"msg":"身份证号不能为空","state":0};
            }
            //校验长度,类型
            if (isCardNo(_idCard) === false) {
                return {"msg":"您输入的身份证号码不正确,请重新输入","state":0};
            }
            //检查省份
            if (checkProvince(_idCard) === false) {
                return {"msg":"您输入的身份证号码不正确,请重新输入","state":0};
            }
            //校验生日
            if (checkBirthday(_idCard) === false) {
                return {"msg":"您输入的身份证号码不正确,请重新输入","state":0};
            }
            //检验位的检测
            if (checkParity(_idCard) === false) {
                return {"msg":"您输入的身份证号码不正确,请重新输入","state":0};
            }
            return result;
        }
    }
})();
//---------------以下是测试代码--------------------------------------------

//测试手机号码
//console.log(Validation.checkMobileNo(""));

//测试用户名
//console.log(Validation.checkUserName("1adfdf"));

//测试密码
//console.log(Validation.checkPaw("111"));

//测试邮箱
//console.log(Validation.checkEmail("111@.com"));

//测试是否含有中文
//console.log(Validation.checkIsExitZh("11.11."));

//测试身份证号是否正确
//console.log(Validation.checkIdentificationCard("4211251993121546"));

//测试是否含有特殊字符
//console.log(Validation.existSpecialCharacter("4211251546"));

//校验真实姓名

//console.log(Validation.checkRealName("zhansgn12a"));

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值