js常用正则

/*
 * @Author: 
 * @Date: 2021-03-22 10:32:21
 * @LastEditTime: 2021-11-19 14:00:28
 * @LastEditors: 
 * @Description: 公共校验方法
 */

/* 是否手机号码*/
export function validatePhone(rule, value, callback) {
  const reg = /^(1[3-9]\d{9})$|^([5|6|8|9]\d{7})$|^([6]\d{5})$|^(09\d{8})$/
  if (value === '' || value === undefined || value == null) {
    callback()
  } else {
    if ((!reg.test(value)) && value !== '') {
      callback(new Error('请输入正确的手机号码'))
    } else {
      callback()
    }
  }
}

/* 是否身份证号码*/
export function validateIdNo(rule, value, callback) {
  const reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
  if (value === '' || value === undefined || value == null) {
    callback()
  } else {
    if ((!reg.test(value)) && value !== '') {
      callback(new Error('请输入正确的身份证号码'))
    } else {
      // 身份证校验码算法
      let sum = 0
      for (let i = 17; i > 0; i--) {
        sum += (Math.pow(2, i) % 11) * parseInt(value.charAt(17 - i), 11)
      }
      const idCardLastList = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']
      const remainder = sum % 11
      if (idCardLastList[remainder] !== value.substr(17, 1).toUpperCase()) {
        callback(new Error('请输入正确的身份证号码'))
      } else {
        callback()
      }
      // callback()
    }
  }
}

/**
 * 邮箱格式验证
 * @param {string} email
 * @returns {Boolean}
 */
export function validEmail(rule, value, callback) {
  if (!value) {
    callback()
    return
  }
  const reg = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
  if (value.length > 50) {
    callback(new Error(`邮箱长度不能超过50`))
  }
  if (!reg.test(value)) {
    callback(new Error(`邮箱格式有误`))
  } else {
    callback()
  }
}
/**
 * 输入验证
 * @param {boolean} rule 是否校验格式
 * @param {*} value
 * @param {*} callback
 * @param {string} type 验证字段
 * @param {number} length 字符长度
 */
export function validateNormal(rule = true, value, callback, type, length = 50) {
  const reg = /^[\u4E00-\u9FA5A-Za-z0-9]+$/g
  if (value === '' || value === undefined || value === null) {
    callback()
  } else {
    if (value.length > length) {
      callback(new Error(`${type}长度超出限制,限制长度${length}`))
    }
    if (rule) {
      if ((!reg.test(value)) && value !== '') {
        callback(new Error(`${type}格式输入错误`))
      } else {
        callback()
      }
    } else {
      callback()
    }
  }
}

/**
 * 输入验证
 * @param {boolean} rule 必须由中英文,数字,特殊符号 - ()
 * @param {*} value
 * @param {*} callback
 * @param {string} type 验证字段
 * @param {number} length 字符长度
 */
export function validateNormalCharacter(rule = true, value, callback, type, length = 50) {
  const reg = /^[A-Za-z0-9\u4E00-\u9FA5\(\)\uff08\uff09-]+$/
  if (value === '' || value === undefined || value === null) {
    callback()
  } else {
    if (value.length > length) {
      callback(new Error(`${type}长度超出限制,限制长度${length}`))
    }
    if (rule) {
      if ((!reg.test(value)) && value !== '') {
        console.log('又进来了')
        callback(new Error(`${type}格式输入错误`))
      } else {
        callback()
      }
    } else {
      callback()
    }
  }
}

/**
 * @description: 修改密码页面 - 新密码校验规则
 * @param {*} value
 * @param {*} callback
 */
export function validPassword(value, callback) {
  if (!value) {
    callback()
  }
  const reg = /^(?![A-Za-z]+$)(?![A-Z\d]+$)(?![A-Z\W]+$)(?![a-z\d]+$)(?![a-z\W]+$)(?![\d\W]+$)\S{8,50}$/
  if (value.length > 50) {
    callback(new Error(`密码长度不能超过50`))
  }
  if (!reg.test(value)) {
    callback(new Error(`密码格式输入错误`))
  } else {
    callback()
  }
}

/**
 * 座机和传真校验
 * @param {string} value
 * @returns {Boolean}
 */
export function validTelOrFax(rule, value, callback) {
  if (!value) {
    callback()
  } else {
    const reg = /^(\d{3,4}-)?\d{7,8}$/
    if (value.length < 10 || value.length > 13 || !reg.test(value)) { // 判断传真字符范围是在10到13
      callback(new Error('座机或传真格式如:0376-1234567'))
    } else {
      callback()
    }
  }
}

/**
 * 网址校验
 * @param {string} value
 * @returns {Boolean}
 */

export function validURL(rule, value, callback) {
  if (!value) {
    callback()
  } else {
    // const reg = /^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\*\+,;=.]+$/
    const reg = /^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)(([A-Za-z0-9-~]+)\.)+([A-Za-z0-9-~\/])+$/
    if (!reg.test(value) && value !== '') {
      callback(new Error('请输入正确的网址'))
    } else {
      callback()
    }
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值