前端常用的校验规则

身份证号校验规则

 /*
* 身份证15位编码规则:dddddd yymmdd xx p
* dddddd:6位地区编码
* yymmdd: 出生年(两位年)月日,如:910215
* xx: 顺序编码,系统产生,无法确定
* p: 性别,奇数为男,偶数为女
*
* 身份证18位编码规则:dddddd yyyymmdd xxx y
* dddddd:6位地区编码
* yyyymmdd: 出生年(四位年)月日,如:19910215
* xxx:顺序编码,系统产生,无法确定,奇数为男,偶数为女
* y: 校验码,该位数值可通过前17位计算获得
*
* 前17位号码加权因子为 Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ]
* 验证位 Y = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ]
* 如果验证码恰好是10,为了保证身份证是十八位,那么第十八位将用X来代替
* 校验位计算公式:Y_P = mod( ∑(Ai×Wi),11 )
* i为身份证号码1...17 位; Y_P为校验码Y所在校验码数组位置
*/
function validateIdCard(idCard){
//15位和18位身份证号码的正则表达式
var regIdCard=/^(^[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{4})|\d{3}[Xx])$)$/;

//如果通过该验证,说明身份证格式正确,但准确性还需计算
if(regIdCard.test(idCard)){
    if(idCard.length==18){
        var idCardWi=new Array( 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ); //将前17位加权因子保存在数组里
        var idCardY=new Array( 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ); //这是除以11后,可能产生的11位余数、验证码,也保存成数组
        var idCardWiSum=0; //用来保存前17位各自乖以加权因子后的总和
        for(var i=0;i<17;i++){
            idCardWiSum+=idCard.substring(i,i+1)*idCardWi[i];
        }
        var idCardMod=idCardWiSum%11;//计算出校验码所在数组的位置
        var idCardLast=idCard.substring(17);//得到最后一位身份证号码
        //如果等于2,则说明校验码是10,身份证号码最后一位应该是X
        if(idCardMod==2){
            if(idCardLast=="X"||idCardLast=="x"){
                alert("恭喜通过验证啦!");
            }else{
                alert("身份证号码错误!");
            }
        }else{
            //用计算出的验证码与最后一位身份证号码匹配,如果一致,说明通过,否则是无效的身份证号码
            if(idCardLast==idCardY[idCardMod]){
                alert("恭喜通过验证啦!");
            }else{
                alert("身份证号码错误!");
            }
        }
    }
}else{
    alert("身份证格式不正确!");
}
}

手机号校验规则

function checkMobile(){ 
 var sMobile = document.mobileform.mobile.value 
 if(!(/^1[3|4|5|8][0-9]\d{4,8}$/.test(sMobile))){ 
  document.mobileform.mobile.focus(); 
  return false; 
 } 
} 

邮箱校验规则

email = function(){
    var email = this.value;
    var reg = /^([a-zA-Z]|[0-9])(\w|\-)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/;
    if(reg.test(email)){
        return true;
    }else{
        return false;
    }
}

密码校验

validatePsdReg = (rule, value, callback) => {
  if (!value) {
    return callback(new Error('请输入密码'))
  }
  if (!/^(?![\d]+$)(?![a-zA-Z]+$)(?![^\da-zA-Z]+$)([^\u4e00-\u9fa5\s]){6,20}$/.test(value)) {
    callback(new Error('请输入6-20位英文字母、数字或者符号(除空格),且字母、数字和标点符号至少包含两种'))
  } else {
    callback()
  }
}

中文校验

validateContacts = (rule, value, callback) => {
  if (!value) {
    return callback(new Error('请输入中文'))
  }
  if (!/^[\u0391-\uFFE5A-Za-z]+$/.test(value)) {
    callback(new Error('不可输入特殊字符'))
  } else {
    callback()
  }
}

其他规则

一、校验数字的表达式

数字:1KaTeX parse error: Undefined control sequence: \d at position 14: </br> n位的数字:^\̲d̲{n}
至少n位的数字:^\d{n,}KaTeX parse error: Undefined control sequence: \d at position 16: </br> m-n位的数字:^\̲d̲{m,n}
零和非零开头的数字:^(0|[1-9][0-9]
) < / b r > 非 零 开 头 的 最 多 带 两 位 小 数 的 数 字 : ( [ 1 − 9 ] [ 0 − 9 ] ∗ ) + ( . [ 0 − 9 ] 1 , 2 ) ? </br> 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})? </br>([19][09])+(.[09]1,2)?
带1-2位小数的正数或负数:^(-)?\d+(.\d{1,2})?KaTeX parse error: Undefined control sequence: \- at position 19: …r> 正数、负数、和小数:^(\̲-̲|\+)?\d+(\.\d+)…
有两位小数的正实数:2+(.[0-9]{2})? < / b r > 有 1   3 位 小 数 的 正 实 数 : [ 0 − 9 ] + ( . [ 0 − 9 ] 1 , 3 ) ? </br> 有1~3位小数的正实数:^[0-9]+(.[0-9]{1,3})? </br>1 3[09]+(.[09]1,3)?
非零的正整数:3\d*$ 或 ^([1-9][0-9]){1,3}$ 或 ^+?[1-9][0-9]KaTeX parse error: Undefined control sequence: \- at position 15: </br> 非零的负整数:^\̲-̲[1-9][]0-9″* 或 ^-[1-9]\d*KaTeX parse error: Undefined control sequence: \d at position 13: </br> 非负整数:^\̲d̲+4\d*|0KaTeX parse error: Undefined control sequence: \d at position 19: …r> 非正整数:^-[1-9]\̲d̲*|0 或 ^((-\d+)|(0+))KaTeX parse error: Undefined control sequence: \d at position 14: </br> 非负浮点数:^\̲d̲+(\.\d+)?5\d*.\d*|0.\d*[1-9]\d*|0?.0+|0KaTeX parse error: Undefined control sequence: \d at position 17: …/br> 非正浮点数:^((-\̲d̲+(\.\d+)?)|(0+(… 或 ^(-([1-9]\d*.\d*|0.\d*[1-9]\d*))|0?.0+|0KaTeX parse error: Undefined control sequence: \d at position 18: …br> 正浮点数:^[1-9]\̲d̲*\.\d*|0\.\d*[1… 或 ^(([0-9]+.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9]))KaTeX parse error: Undefined control sequence: \d at position 20: …> 负浮点数:^-([1-9]\̲d̲*\.\d*|0\.\d*[1… 或 ^(-(([0-9]+.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9])))KaTeX parse error: Undefined control sequence: \d at position 15: </br> 浮点数:^(-?\̲d̲+)(\.\d+)? 或 ^-?([1-9]\d*.\d*|0.\d*[1-9]\d*|0?.0+|0)$

二、校验字符的表达式

字母开头,不包含空格 特殊符号 中文 /6[A-Za-z0-9]+KaTeX parse error: Can't use function '\u' in math mode at position 33: …,不包含空格 特殊符号 /^[\̲u̲4E00-\u9FA5A-Za…/
汉字:7{0,}KaTeX parse error: Can't use function '\u' in math mode at position 13: </br> 中文字符:[\̲u̲4e00-\u9fa5]</b…8{4,40} < / b r > 长 度 为 3 − 20 的 所 有 字 符 : . 3 , 20 </br> 长度为3-20的所有字符:^.{3,20} </br

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值