关于我个人前端的一些正则校验

84 阅读1分钟

一、数值校验

/**

  • 数值校验(整数/浮点, 包括 0 )
    1. 不区分数字还是字符串,如 1.23 和 '1.23' 都可以校验通过
  • @param {number} m 整数部分最大位数,默认 9
  • @param {number} n 小数部分最大位数,默认 2
  • @param {boolean} strict 是否严格模式(默认false),严格模式下,小数位数必须严格是 n 位 */
const numRegFn = (m = 9, n = 2, strict = false) => {
  if (m <= 0 || n < 0) {
    console.log('m 需 >= 0, n 需 >0')
    return
  }
  if (n === 0) {
    return new RegExp(`^[0-9]{1,${m}}$`) // 整数
  }
  if (strict) {
    return new RegExp(`^[0-9]{1,${m}}(\\.\\d{${n}})$`)
  } else {
    return new RegExp(`^[0-9]{1,${m}}$|^[0-9]{1,${m}}(\\.\\d{1,${n}})?$`)
  }
}

二、字符串校验

/**

    1. 不能是纯数字,如 '12345' 无法校验通过
    1. 不能包含汉字
  • @param {number} minLen 最小长度限制,默认 1
  • @param {number|Infinity} maxLen 最大长度限制,默认不限制
  • @param {boolean} pure 是否只包含字母(即a-zA-Z),默认 false。若为 true,将包含字母和数字
  • @returns 默认 /^[0-9a-zA-Z]{1,}$/ */
const strRegFn = (minLen = 1, maxLen = Infinity, pure = false) => {
  if (minLen < 1 || minLen > maxLen) {
    console.log('参数错误')
    return false
  }
  const range = maxLen && maxLen !== Infinity ? `{1,${maxLen}}` : '{1,}'

  if (pure) {
    return new RegExp(`^[a-zA-Z]${range}$`)
  } else {
    return new RegExp(`^(?=.*[a-zA-Z])[A-Za-z0-9 _]${range}$`)
  }
}

...静待更新