vue--表单检验、常用到的一些正则表达校验、身份证15位转18位

 

先看看vue中使用的表单校验,npm 安装表单校验相关的依赖后会自动生成一个文件夹,在这个文件夹的index.js中配置即可,如下

这里还安装了中文依赖包

import Vue from 'vue';
import VeeValidate,{ Validator } from 'vee-validate';
import message from './message';

Vue.use(VeeValidate)
Validator.localize('ch', message);

//验证规则
Validator.extend('mobile',{ //手机号码验证
    getMessage: '请输入正确的手机号码!',
    validate: value => {
        return  /^(\+86)?1[3456789]\d{9}$/.test(value);
    }
})

Validator.extend('custName',{ // 客户名称
    getMessage: '请输入正确的客户名称!',
    validate: value => {
        return /^[\u4E00-\u9FA5A-Za-z()()]+$/.test(value);
    }
})

Validator.extend('email',{ //邮箱地址验证
    getMessage: '请输入正确的邮箱地址!',
    validate: value => {
        return /^[A-Za-z\d]+([-_.][A-Za-z\d]+)*@([A-Za-z\d]+[-.])+[A-Za-z\d]{2,4}$/.test(value);
    }
})

Validator.extend('cardId',{ //身份证号码验证
    getMessage: '请输入正确的身份证号码!',
    validate: value => {
        return /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/.test(value);
    }
})

Validator.extend('isQQ',{ //QQ号码验证
    getMessage: '请输入正确的QQ号码!',
    validate: value => {
        return /^[1-9][0-9]{4,}$/.test(value);
    }
})

Validator.extend('isWX',{ //微信号码验证
    getMessage: '请输入正确的微信号码!',
    validate: value => {
        return /^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+$/.test(value);
    }
})

Validator.extend('isPhone',{ //电话号码验证
    getMessage: '请输入正确的电话号码!',
    validate: value => {
        return /^(\+86)?1[3456789]\d{9}$/.test(value);
    }
})

Validator.extend('isfax',{ //传真号码验证
    getMessage: '请输入正确的传真号码!',
    validate: value => {
        return /^(\d{3,4}-)?\d{7,8}$/.test(value);
    }
})

Validator.extend('isHomeNum',{ //家庭电话号码
    getMessage: '请输入正确的家庭电话号码!',
    validate: value => {
        let reg = /^(\d{3,4}-)\d{7,8}$/;
        let reg1 = /^(1[3456789]\d{9})$/;
        let reg2 = /^(\+86)?[0-9]{1,11}$/;
        return reg.test(value) || reg1.test(value) || reg2.test(value);
    }
})

Validator.extend('isTax',{ //传真号码验证
    getMessage: '请输入正确的税务号!',
    validate: value => {
        let reg = /^[A-Z0-9]{15}$/;
        let reg1 = /^[A-Z0-9]{18}$/;
        return reg.test(value) || reg1.test(value)
    }
})

Validator.extend('isCard',{ //通用证件号码验证
    getMessage: '请输入正确的号码!',
    validate: value => {
        let reg = /^[\u4e00-\u9fa5]+$/;
        return !reg.test(value);
    }
})

 

再来看看表单校验自定义错误提示信息message.js文件

 

以下是常规js校验

// 身份证15位转18位
checkCardID (cardID) {
    let v = new Array();
    let vs = "10X98765432";
    let cardObj = {
        code:'',
        val: ''
    }
    v.push(2, 4, 8, 5, 10, 9, 7, 3, 6, 1, 2, 4, 8, 5, 10, 9, 7);
    if (cardID.length != 15) {
        cardObj.code = '0';
        cardObj.val = "请输入15位身份证号码!";
        return cardObj;
    }
    let reg = /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;
    if (reg.test(cardID) === false) {
        cardObj.code = '0';
        cardObj.val = "请输入正确的身份证信息"
        return cardObj;
    }
    //将15位的号码转换位17位
    let cardIDcardID17 = cardID.substring(0, 6) + "19" + cardID.substring(6);
    let N = 0;
    let R = -1;
    let T = '0';//储存最后一个数字
    let j = 0;
    //计数出第18位数字
    for (let i = 16; i >= 0; i--) {
        N += parseInt(cardIDcardID17.substring(i, i + 1)) * v[j];
        j++;
    }
    R = N % 11;
    T = vs.charAt(R);
    cardObj.code = '1';
    cardObj.val = cardIDcardID17 + T;
    return cardObj;
},
//判断输入的月份是否正确
checkMonth(month) {
    if (month < 1 || month > 12) {
        return false;
    }
    return true;
},
/**
**检查你输入的天数是否正确
**yean为年
**month为月
**day为日
**/
checkDay (year, month, day) {
    let Mday = 0;
    if (day < 1 || day > 31) {
        return false;
    }
    if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {
        Mday = 31;
    }
    if (month == 4 || month == 6 || month == 9 || month == 11) {
        Mday = 30;
    }
    if (month == 2) {
        Mday = isLeapYear(year);
    }
    if (day > Mday) {
        return false;
    }
    return true;
},
//判断你输入的年是否位闰年
isLeapYear(year) {
    return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0) ? 29 : 28;
},

// 身份证判断
isCardId(card) {
    let reg = /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/;
    return reg.test(card);
},

// 护照判断
isPassPort(card) {
    let reg = /^([a-zA-z]|[0-9]){6,64}$/;
    return reg.test(card);
},

// 港澳台通行证
isPassCard(card) {
    let reg = /^[HMhm]{1}([0-9]{10}|[0-9]{8})$/;
    let reg1 = /^[0-9]{8}$/;
    let reg2 = /^[0-9]{10}$/;
    return reg.test(card) || reg1.test(card) || reg2.test(card);
},

// 军人证件
isSoldier (card) {
    // 样本: 军字第2001988号, 士字第P011816X号
    let reg = /^[\u4E00-\u9FA5](字第)([0-9a-zA-Z]{4,8})(号?)$/;
    return reg.test(card) 
},

// 组织机构代码证
isOrg (card) {
    let reg = /^[A-Za-z0-9]{9}$/;
    return reg.test(card)
},

// 工商登记证
isBusiness (card) {
    let reg = /^([A-Za-z0-9]{15}|[A-Za-z0-9]{18})$/;
    return reg.test(card)
},

// 税务登记证
isTaxAdministration (card) {
    let reg = /^([A-Z0-9]{15}|[A-Z0-9]{17}|[A-Z0-9]{20})$/;
    return reg.test(card)
},

// 事业单位法人证
isInstitution (card) {
    let reg = /^12[\d\w\W]{16}$/;
    return reg.test(card)
},

// 社会团体法人登记证
isSocialOrganization (card) {
    let reg = /^51[\d\w\W]{16}$/;
    return reg.test(card)
},

// 18为证件号码校验
isEighteen (card){
    let reg = /^[A-Za-z0-9]{18}$/;
    return reg.test(card)
},

// 外国人永久居留居住证
isForeign(card) {
    let reg = /^[A-Za-z0-9]{15}$/;
    return reg.test(card)
},

// 户口本校验
isAccountCard(card) {
    // 户口本
    // 规则: 15位数字, 18位数字, 17位数字 + X
    // 样本: 441421999707223115
    var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
    return reg.test(card)
},

// 统一社会信用代码证
isSocialCredit (card) {
    let reg = /^[A-Za-z0-9]{18}$/;
    return reg.test(card)
},

/**证件子类型**/
//外国驻华新闻机构证 21
isCheckCard1 (card){
    let reg = /^21[A-Za-z0-9]{16}$/;
    return reg.test(card)
},
isCheckCard789 (card){
    let reg = /^21[A-Za-z0-9]{16}$/;
    return reg.test(card)
},
//宗教活动场所登记证 71
isCheckCard2 (card){
    let reg = /^71[A-Za-z0-9]{16}$/;
    return reg.test(card)
},
//民办非企业单位登记证 52
isCheckCard3 (card){
    let reg = /^52[A-Za-z0-9]{16}$/;
    return reg.test(card)
},
//基金会法人登记证 53
isCheckCard4 (card){
    let reg = /^53[A-Za-z0-9]{16}$/;
    return reg.test(card)
},
//工会法人资格证书 8
isCheckCard5 (card){
    let reg = /^8[A-Za-z0-9]{17}$/;
    return reg.test(card)
},
//律师事务所执业许可证 3
isCheckCard6 (card){
    let reg = /^3[A-Za-z0-9]{17}$/;
    return reg.test(card)
},
//外国律师事务所驻华代表处执业许可证 3
isCheckCard7 (card){
    let reg = /^3[A-Za-z0-9]{17}$/;
    return reg.test(card)
},
//基层群众性自治组织特别法人统一社会信用代码证书 55
isCheckCard8 (card){
    let reg = /^55[A-Za-z0-9]{16}$/;
    return reg.test(card)
},
//上海市农村集体经济组织登记证书 N
isCheckCard9 (card){
    let reg = /^N[A-Za-z0-9]{17}$/;
    return reg.test(card)
},
//境外非政府组织代表机构登记证书 G
isCheckCard10 (card){
    let reg = /^G[A-Za-z0-9]{17}$/;
    return reg.test(card)
},

 

posted @ 2019-10-11 15:16  望兰鸟  阅读(5437)  评论(0编辑  收藏  举报