Bootstrap

正则验证

Vue中使用到的正则验证


邮箱,手机号,身份证,IP ,微信号, 密码的校验 ,确认密码的校验等

正则验证


export const validater = {
 
  /**
   * 校验 包括中文字、英文字母、数字和下划线
   * 登录账号校验
   */
  validateAccount(rule, value, callback) {
    let acount = /^(?!_)(?!.*?_$)[a-zA-Z0-9_\u4e00-\u9fa5]+$/
    if (value && (!(acount).test(value))) {
      callback(new Error('账号不符合规范'))
    } else {
      callback()
    }
  },
 
  /**
   * IP地址校验
   */
  ipAddress(rule, value, callback) {
	if(value && "..." === value){
		callback(new Error('请输入IP地址'))
	}if (value && !(/((25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))/).test(value)) {
      callback(new Error('IP地址不符合规范'))
    } else {
      callback()
    }
  },
 
  /**
   * 手机号码校验
   */
  phoneNumber(rule, value, callback) {
    if (value && (!(/^[1][34578]\d{9}$/).test(value) || !(/^[1-9]\d*$/).test(value) || value.length !== 11)) {
      callback(new Error('手机号码不符合规范'))
    } else {
      callback()
    }
  },
 
  /**
   * 电话号码校验
   */
  telephoneNumber(rule, value, callback) {
    if (value && (!(/^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/).test(value))) {
      callback(new Error('电话号码不符合规范'))
    } else {
      callback()
    }
  },
 
  /**
   * 邮箱校验
   */
  emailValue(rule, value, callback) {
    let temp = /^[\w.\-]+@(?:[a-z0-9]+(?:-[a-z0-9]+)*\.)+[a-z]{2,3}$/
    let tempOne = /^[A-Za-zd]+([-_.][A-Za-zd]+)*@([A-Za-zd]+[-.])+[A-Za-zd]{2,5}$/
    if (value && (!(temp).test(value))) {
      callback(new Error('邮箱格式不符合规范'))
    } else {
      callback()
    }
  },
 
  /**
   * 身份证号码校验
   */
  idCard(rule, value, callback) {
    if (value && (!(/\d{17}[\d|x]|\d{15}/).test(value) || (value.length !== 15 && value.length !== 18))) {
      callback(new Error('身份证号码不符合规范'))
    } else {
      callback()
    }
  },
 
  /**
   * 正整数校验
   */
  integerP(rule, value, callback) {
    if (value && !(/^[1-9]\d*$/).test(value)) {
      callback(new Error('只能填写正整数'))
    } else {
      callback()
    }
  },
 
  /**
   * 负整数校验
   */
  integerN(rule, value, callback) {
    if (value && !(/^-[1-9]\d*$/).test(value)) {
      callback(new Error('只能填写负整数'))
    } else {
      callback()
    }
  },
 
  /**
   * 英文字符校验
   */
  enText(rule, value, callback) {
    // let a = '',
    //   arr = value.split(" ")
    // for (let i = 0; i < arr.length; i++) { //删除行内空格
    //   a += arr[i];
    // }
    if (value && !(/^[A-Za-z]+$/).test(value)) {
      callback(new Error('只能填写英文字符'))
    } else {
      callback()
    }
  },
  /**
   * 中文字符英文字符校验
   */
  ChEnText(rule, value, callback) {
    if (value && !(/^[A-Za-z0-9]+$/).test(value)) {
      callback(new Error('只能填写数字和英文字符'))
    } else {
      callback()
    }
  },
  /**
   * 中文字符校验
   */
  cnText(rule, value, callback) {
    // let a = '',
    //   arr = value.split(" ")
    // for (let i = 0; i < arr.length; i++) { //删除行内空格
    //   a += arr[i];
    // }
    if (value && (/[^\u4e00-\u9fa5]/).test(value)) {
      callback(new Error('只能填写中文字符'))
    } else {
      callback()
    }
  },
  /**
   * 只能输入英文或者数字
   */
  enOrnunText (rule, value, callback) {
    if (value && !(/^[A-Za-z0-9]+$/).test(value)) {
      callback(new Error('只能填写英文或者数字'))
    } else {
      callback()
    }
  },
  /**
   * 20位数字国标编码校验,且为正整数
   */
  validateDeviceNo (rule, value, callback) {
    if (value && !(/^[1-9]\d*$/).test(value)) {
      callback(new Error('只能填写正整数'))
    } else {
      if (!/^[0-9]{20}$/.test(value)) {
        callback(new Error('请输入20位数字的编码!'));
      } else {
        callback();
      }
    }
  },
  /**
   *校验电脑Mac地址
   *以xx-xx-xx-xx-xx-xx的形式输入(xx为16进制数字)
   */
  validateMac (rule, value, callback) {
    let temp = /[A-Fa-f0-9]{2}-[A-Fa-f0-9]{2}-[A-Fa-f0-9]{2}-[A-Fa-f0-9]{2}-[A-Fa-f0-9]{2}-[A-Fa-f0-9]{2}/;
    if (!temp.test(value)) {
      callback(new Error('请输入xx-xx-xx-xx-xx-xx形式的MAC地址!'));
    } else{
      callback();
    }
  },
  /**
   * 校验地址代码或者分组代码
   */
  validateCode (rule, value, callback) {
    let num = /^[1-9]\d*$/
    if (value && !(num).test(value)) {
      callback(new Error('只能填写正整数'))
    } else {
      let codeLen = value.toString().length
      console.log(codeLen)
      if(codeLen > 0 && codeLen % 3 !== 0){
        callback(new Error('输入的长度必须是3的倍数'))
      }else if(codeLen>18){
        callback(new Error('输入的长度不能超过18位,请重新输入'))
      }
      else {
        callback()
      }
    }
  },
 
  /**
   * 校验字符长度
   */
  validateLength (rule, value, callback) {
    let codeLen = value.toString().length
    if(codeLen>18){
      callback(new Error('输入的长度不能超过20位,请重新输入'))
    }
  },
 
  /**
   * 数字 ,两位
   */
  validateTwoNum (rule, value, callback) {
    let temp = /^[1-9]{2}$/;
    if (!temp.test(value)) {
      callback(new Error('请输入两位正整数!'));
    } else{
      callback();
    }
  },
 
  /**
  * 校验经度是否符合规范
  * 
   */
  checkLongitude(rule, value, callback) {
    let longrg = /^(\-|\+)?(((\d|[1-9]\d|1[0-7]\d|0{1,3})\.\d{0,6})|(\d|[1-9]\d|1[0-7]\d|0{1,3})|180\.0{0,6}|180)$/;
    if(!longrg.test(value)){
      callback(new Error('经度整数部分为0-180,小数部分为0到6位!'));
    } else {
      callback();
    }
    },
 
 /**
  * 校验纬度是否符合规范
  * 
  */
  checkLatitude(rule, value, callback) {
  var latreg = /^(\-|\+)?([0-8]?\d{1}\.\d{0,6}|90\.0{0,6}|[0-8]?\d{1}|90)$/;
   if(!latreg.test(value)){
     callback(new Error('纬度整数部分为0-90,小数部分为0到6位!'));
   } else {
     callback();
   }
}
}
  • 使用方法
 ip: [
 *    {required: true, message: '请输入矩阵IP', trigger: 'blur'},
 *    {validator: this.$rules.ipAddress, trigger: 'blur'}
 *  ]


1. 手机号:
	var validateMobilePhone = (rule, value, callback) => {
	        if (value === '') {
	          callback(new Error('手机号不可为空'));
	        } else {
	          if (value !== '') { 
	            var reg=/^1[3456789]\d{9}$/;
	            if(!reg.test(value)){
	              callback(new Error('请输入有效的手机号码'));
	            }
	          }
	          callback();
	        }
	      };
2. 邮箱:
	var validateEmail = (rule, value, callback) => {
	        if (value === '') {
	          callback(new Error('请正确填写邮箱'));
	        } else {
	          if (value !== '') { 
	            var reg=/^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/;
	            if(!reg.test(value)){
	              callback(new Error('请输入有效的邮箱'));
	            }
	          }
	          callback();
	        }
	      };
3. 密码:
	var validatePass = (rule, value, callback) => {
	        if (value === '') {
	          callback(new Error('密码格式不正确'));
	        } else if(value.length < 6){
	          callback(new Error('密码长度最小6位'));
	        }else{
	          callback();
	        }
	      };
4. 固定电话:
	var validatePhone = (rule, value, callback) => {
	        if (value === '') {
	          callback(new Error('电话不可为空'));
	        } else {
	          if (value !== '') { 
	            var reg =/^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/;
	            if(!reg.test(value)){
	              callback(new Error('请输入正确的座机号格式为:0000-0000000'));
	            }
	          }
	          callback();
	        }
	      };
5. 微信号:
	var validateWeixin = (rule, value, callback) => {
	        if (value === '') {
	          callback(new Error('微信号不能为空'));
	        }else{
	          var reg= /^[a-zA-Z][a-zA-Z0-9_-]{5,19}$/;
	          if(!reg.test(value)){
	            callback(new Error('请输入正确的微信号码'));
	          }else{
	            callback();
	          }
	        } 
	      };
6. IP地址:
	 var validateIP(rule, value, callback) {
		if(value && "..." === value){
			callback(new Error('请输入IP地址'))
		}if (value && !(/((25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))/).test(value)) {
	      callback(new Error('IP地址不规范'))
	    } else {
	      callback()
	    }
	  }
7. 身份证号:
	var  validateIDCard(rule, value, callback) {
	    if (value && (!(/\d{17}[\d|x]|\d{15}/).test(value) || (value.length !== 15 && value.length !== 18))) {
	      callback(new Error('身份证号码不规范'))
	    } else {
	      callback()
	    }
	  }
8. 正整数:
	var validateIntegerP(rule, value, callback) {
	    if (value && !(/^[1-9]\d*$/).test(value)) {
	      callback(new Error('只能填写正整数'))
	    } else {
	      callback()
	    }
	  }
	//负整数 /^-[1-9]\d*$/
9. 电脑MAC地址:
	 var validateMac (rule, value, callback) {
	    let temp = /[A-Fa-f0-9]{2}-[A-Fa-f0-9]{2}-[A-Fa-f0-9]{2}-[A-Fa-f0-9]{2}-[A-Fa-f0-9]    {2}-[A-Fa-f0-9]{2}/;
	    if (!temp.test(value)) {
	      callback(new Error('请输入xx-xx-xx-xx-xx-xx形式的MAC地址!'));
	    } else{
	      callback();
	    }
}

10.  密码的校验方法
        let validatePass = (rule, value, callback) => {
            if (value === "") {
                return callback(new Error("请输入密码"));
            }
            // 密码以字母开头,长度在6-18之间,允许字母数字和下划线
            const passwordRule = /^[a-zA-Z]\w{5,17}$/;
            if (passwordRule.test(value)) {
                this.$refs.registerRef.validateField("checkPass");
                return callback();
            } else {
                return callback(
                    new Error("字母开头,长度6-18之间,允许字母数字和下划线")
                );
            }
        };
   12.   确认密码的校验方法
        let validateConfirmPass = (rule, value, callback) => {
            if (value === "") {
                return callback(new Error("请输入确认密码"));
            }
            // 校验是否以密码一致
            if (this.registerForm.password !== "" && value === this.registerForm.password) {
                this.$refs.registerRef.validateField("checkPass");
                return callback();
            } else {
                return callback(new Error("两次输入的密码不一致"));
            }
        };
;