JS验证邮箱格式、信用码、税号和注册号

废话不多说,直接上代码。

1.邮箱格式判断

function isEmailAddress(obj) {
    var pattern = /^[A-Za-z\d]+([-_.][A-Za-z\d]+)*@([A-Za-z\d]+[-.])+[A-Za-z\d]{2,5}$/;
    flag = pattern.test(obj);
    return flag;
}

2.校验统一社会信用编码

function CheckSocialCreditCodeOrg(Code) {
    var patrn = /^[0-9A-Z]+$/;
    //18位校验及大写校验
    if ((Code.length != 18) || (patrn.test(Code) == false))
    {
        return false;
    }
    else
    {
        var Ancode;//信用代码/税号的每一个值
        var Ancodevalue;//信用代码/税号每一个值的权重
        var total = 0;
        var weightedfactors = [1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28];//加权因子
        var str = '0123456789ABCDEFGHJKLMNPQRTUWXY';
        //不用I、O、S、V、Z
        for (var i = 0; i < Code.length - 1; i++)
        {
            Ancode = Code.substring(i, i + 1);
            Ancodevalue = str.indexOf(Ancode);
            total = total + Ancodevalue * weightedfactors[i];
            //权重与加权因子相乘之和
        }
        var logiccheckcode = 31 - total % 31;
        if (logiccheckcode == 31)
        {
            logiccheckcode = 0;
        }
        var Str = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,T,U,W,X,Y";
        var Array_Str = Str.split(',');
        logiccheckcode = Array_Str[logiccheckcode];


        var checkcode = Code.substring(17, 18);
        if (logiccheckcode != checkcode)
        {
            return false;
            // alert("不是有效的统一社会信用编码!");
        }else{
            return true;
        }
    }
}

3.校验个体工商户验证码
/**
*验证营业执照是否合法:营业执照长度须为15位数字,前14位为顺序码,
*最后一位为根据GB/T 17710 1999(ISO 7064:1993)的混合系统校验位生成算法
*计算得出。此方法即是根据此算法来验证最后一位校验位是否政正确。如果
*最后一位校验位不正确,则认为此营业执照号不正确(不符合编码规则)。
*以下说明来自于网络:
*我国现行的营业执照上的注册号都是15位的,不存在13位的,从07年开始国
*家进行了全面的注册号升级就全部都是15位的了,如果你看见的是13位的注
*册号那肯定是假的。
*15位数字的含义,代码结构工商注册号由14位数字本体码和1位数字校验码
*组成,其中本体码从左至右依次为:6位首次登记机关码、8位顺序码。
* 一、前六位代表的是工商行政管理机关的代码,国家工商行政管理总局用
* “100000”表示,省级、地市级、区县级登记机关代码分别使用6位行
* 政区划代码表示。设立在经济技术开发区、高新技术开发区和保税区
* 的工商行政管理机关(县级或县级以上)或者各类专业分局应由批准
* 设立的上级机关统一赋予工商行政管理机关代码,并报国家工商行政
* 管理总局信息化管理部门备案。
* 二、顺序码是7-14位,顺序码指工商行政管理机关在其管辖范围内按照先
* 后次序为申请登记注册的市场主体所分配的顺序号。为了便于管理和
* 赋码,8位顺序码中的第1位(自左至右)采用以下分配规则:
*   1)内资各类企业使用“0”、“1”、“2”、“3”;
*   2)外资企业使用“4”、“5”;
*   3)个体工商户使用“6”、“7”、“8”、“9”。
* 顺序码是系统根据企业性质情况自动生成的。
*三、校验码是最后一位,校验码用于检验本体码的正确性
*/

function isValidBusCode(busCode){
    var ret=false;
    if(busCode.length===15){//15位
        var sum=0;
        var s=[];
        var p=[];
        var a=[];
        var m=10;
        p[0]=m;
        for(var i=0;i<busCode.length;i++){
            a[i]=parseInt(busCode.substring(i,i+1),m);
            s[i]=(p[i]%(m+1))+a[i];
            if(0==s[i]%m){
                p[i+1]=10*2;
            }else{
                p[i+1]=(s[i]%m)*2;
            }
        }
        if(1==(s[14]%m)){//营业执照编号正确!
            ret=true;
        }else{//营业执照编号错误!
            ret=false;
        }
    }else{//营业执照格式不对,必须是15位数的!
        ret=false;
    }
    return ret;
}

4.纳税人识别号验证
/*
* 纳税人识别号验证
* 15位包括地区编码6位+组织机构代码9位
*/

function checkTaxpayerId(taxpayerId){
    if(taxpayerId!="" && taxpayerId.length===15){
        var addressCode = taxpayerId.substring(0,6);
        // 校验地址码
        var check = checkAddressCode(addressCode);
        if(!check){
            return false;
        }
        // 校验组织机构代码
        var orgCode = taxpayerId.substring(6,9);
        check = isValidOrgCode(orgCode);
        if(!check){
            return false;
        }
        return true;
    }else{
        return false;
    }
}

/**
*验证组织机构代码是否合法:组织机构代码为8位数字或者拉丁字母+1位校验码。
*验证最后那位校验码是否与根据公式计算的结果相符。
*/

function isValidOrgCode(value){
    if(value!=""){
        var part1=value.substring(0,8);
        var part2=value.substring(value.length-1,1);
        var ws = [3, 7, 9, 10, 5, 8, 4, 2];
        var str = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
        var reg = /^([0-9A-Z]){8}$/;
        if (!reg.test(part1))
        {
            return true
        }
        var sum = 0;
        for (var i = 0; i< 8; i++)
        {
            sum += str.indexOf(part1.charAt(i)) * ws[i];
        }
        var C9 = 11 - (sum % 11);
        var YC9=part2+'';
        if (C9 == 11) {
            C9 = '0';
        } else if (C9 == 10) {
            C9 = 'X' ;
        } else {
            C9 = C9+'';
        }
        return YC9!=C9;
    }
}

/*
*校验地址码
*/

function checkAddressCode(addressCode){
    var provinceAndCitys={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 check = /^[1-9]\d{5}$/.test(addressCode);
    if(!check) return false;
    if(provinceAndCitys[parseInt(addressCode.substring(0,2))]){
        return true;
    }else{
        return false;
    }

}

最后,若觉得对你有帮助的话,请点赞关注一波哦~~~( ̄▽ ̄~)~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值