天天看点

JavaScript 规则验证

// 数字、大写字母或-_/ => 1~20
var idReg = (rule, value, callback) => {
  if (value != '' && value != null) {
    const reg = /^[A-Z0-9-_/]{1,20}$/
    if (!reg.test(value)) {
      callback(new Error('必须由数字、大写字母或-_/组成'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}

// 数字、大写字母或-_ => 1~20
var idRegNew = (rule, value, callback) => {
  if (value != '' && value != null) {
    const reg = /^[A-Z0-9-_]{1,20}$/
    if (!reg.test(value)) {
      callback(new Error('必须由数字、大写字母或-_组成'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}
// 必须有大写字母组成
var rthReg = (rule, value, callback) => {
  if (value != '' && value != null) {
    const reg = /^[A-Z]+$/
    if (!reg.test(value)) {
      callback(new Error('必须由大写字母组成'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}
// 数字、大写字母或- => 1~20
var idRegNews = (rule, value, callback) => {
  if (value != '' && value != null) {
    const reg = /^[A-Z0-9-]{1,10}$/
    if (!reg.test(value)) {
      callback(new Error('必须由数字、大写字母或-组成'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}
// 大写字母或- => 1~20
var idRegNewTwe = (rule, value, callback) => {
  if (value != '' && value != null) {
    const reg = /^[A-Z-]{1,20}$/
    if (!reg.test(value)) {
      callback(new Error('必须由大写字母或-组成'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}
// 数字、字母 => *
var maxENReg = (rule, value, callback) => {
  if (value != '' && value != null) {
    const reg = /^[A-Za-z0-9]*$/
    if (!reg.test(value)) {
      callback(new Error('必须由数字或字母组成'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}

// 2位大写字母/数字 => 2
var ndENReg = (rule, value, callback) => {
  if (value != '' && value != null) {
    const reg = /^[A-Z0-9]{2}$/
    if (!reg.test(value)) {
      callback(new Error('必须由2位大写字母或数字'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}

// 3位大写字母/数字 => 3
var rdENReg = (rule, value, callback) => {
  if (value != '' && value != null) {
    const reg = /^[A-Z0-9]{3}$/
    if (!reg.test(value)) {
      callback(new Error('必须由3位大写字母或者数字组成'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}

// 3位大写字母 => 3
var rdEReg = (rule, value, callback) => {
  if (value != '' && value != null) {
    const reg = /^[A-Z]{3}$/
    if (!reg.test(value)) {
      callback(new Error('必须由3位大写字母组成'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}
// 4位大写字母 => 4
var rthEReg = (rule, value, callback) => {
  if (value != '' && value != null) {
    const reg = /^[A-Z]{4}$/
    if (!reg.test(value)) {
      callback(new Error('必须由4位大写字母组成'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}
// 5的倍数的正整数
var fiveMultiple = (rule, value, callback) => {
  if (value != '' && value != null) {
    const reg = /^5|([1-9]\d{0,}(0|5))$/
    if (!reg.test(value)) {
      callback(new Error('必须是正整数且是5的倍数组成'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}

// 数字 => *
var idNumReg = (rule, value, callback) => {
  if (value != '' && value != null) {
    const reg = /^[0-9]*$/
    if (!reg.test(value)) {
      callback(new Error('必须由纯数字组成'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}

// 数字 => *
var phoneReg = (rule, value, callback) => {
  if (value != '' && value != null) {
    const reg = /^(\d{3}-\d{8}|\d{4}-\d{7,8}|((1[3,5,8][0-9])|(14[1,5,6,7,8])|(16[6,7])|(17[0,1,4,5,6,7,8])|(19[1,7,8,9]))(-)?\d{4}(-)?\d{4})?$/
    if (!reg.test(value)) {
      callback(new Error('该号码格式或位数有误'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}

// ±9999999.99之间 => 1~11
var sevDotTwoDigit = (rule, value, callback) => {
  if (value != '' && value != null) {
    const reg = /^[0-9]{1,7}(\.([0-9]{1,2}))?$/
    if (!reg.test(value)) {
      callback(new Error('必须在0~9999999.99之间'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}

// ±99999.99之间
var fiveDotTwoDigit = (rule, value, callback) => {
  if (value != '' && value != null) {
    const reg = /^-?[0-9]{1,5}(\.([0-9]{1,2}))?$/
    if (!reg.test(value)) {
      callback(new Error('必须在[-99999.99, 99999.99]之间'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}

// 0~9999999.99之间 => 1~13
var sixDotTwoDigit = (rule, value, callback) => {
  if (value != '' && value != null) {
    const reg = /^((\d{1})|([1-9]{1}\d{1,6})){1}(\.\d{1,2})?$/
    if (!reg.test(value)) {
      callback(new Error('必须在[0,9999999.99]之间'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}

// 0~99999.99之间
var fivePositiveDotTwo = (rule, value, callback) => {
  if (value != '' && value != null) {
    if (value == 0) {
      callback(new Error('必须在(0,99999.99]之间'))
    } else {
      const reg = /^((\d{1})|([1-9]{1}\d{1,4})){1}(\.\d{1,2})?$/
      if (!reg.test(value)) {
        callback(new Error('必须在(0,99999.99]之间'))
      } else {
        callback()
      }
    }
  } else {
    callback()
  }
}

// 0~999.99之间
var threeDotTwoDigit = (rule, value, callback) => {
  if (value != '' && value != null) {
    const reg = /^((\d{1})|([1-9]{1}\d{1,2})){1}(\.\d{1,2})?$/
    if (!reg.test(value)) {
      callback(new Error('必须在[0,999.99]之间'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}

// 3位正整数 => 0~3
var threeD = (rule, value, callback) => {
  if (value != '' && value != null) {
    const reg = /^([1-9]\d{0,2})?$/
    if (!reg.test(value)) {
      callback(new Error('必须由0-3位正整数组成'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}

// 5位正整数
var fiveD = (rule, value, callback) => {
  if (value != '' && value != null) {
    const reg = /^([1-9]\d{0,4})?$/
    if (!reg.test(value)) {
      callback(new Error('必须由0-5位正整数组成'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}

// 正整数
var mustD = (rule, value, callback) => {
  if (value != '' && value != null) {
    const reg = /^\d+$/
    if (!reg.test(value)) {
      callback(new Error('必须由正整数组成'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}

// 0~360° => 3
var degreePos = (rule, value, callback) => {
  if (value != '' && value != null) {
    const reg = /^(([0-9]{1})|([1-9]{1}[0-9]{1})|([1-2]{1}[0-9]{2})|([3]{1}[0-5]{1}[0-9]{1})){1}(\.\d{1,4})?$/
    if (!reg.test(value)) {
      callback(new Error('必须在[0°,359.9999°]之间'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}

// 0~360° => 3
var degreePosTwo = (rule, value, callback) => {
  if (value != '' && value != null) {
    const reg = /^((([1-9]\d{0,2})|[0])(.\d{1,2})?)?$/
    if (!reg.test(value)) {
      callback(new Error('必须在[0°,360°]之间且最多保留2位小数'))
    } else {
      const val = Number(value)
      if (val < 0 || val > 360) {
        callback(new Error('必须在[0°,360°]之间且最多保留2位小数'))
      } else {
        callback()
      }
    }
  } else {
    callback()
  }
}

// 0~90° => 3
var slopePosTwo = (rule, value, callback) => {
  if (value != '' && value != null) {
    const reg = /^((([1-9]\d{0,1})|[0])(.\d{1,2})?)?$/
    if (!reg.test(value)) {
      callback(new Error('必须在[0°,90°]之间且最多保留2位小数'))
    } else {
      const val = Number(value)
      if (val < 0 || val > 90) {
        callback(new Error('必须在[0°,90°]之间且最多保留2位小数'))
      } else {
        callback()
      }
    }
  } else {
    callback()
  }
}

// 位数在6-8位 => 6-8
var passwordReg = (rule, value, callback) => {
  if (value != '' && value != null) {
    const reg = /^.{6,8}$/
    if (!reg.test(value)) {
      callback(new Error('必须输入6-8位字符'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}

var loginPasswordReg = (rule, value, callback) => {
  if (value != '' && value != null) {
    const reg = /^(?=.*\d)(?=.*[a-zA-Z])[\da-zA-Z]{8,}$/
    if (!reg.test(value)) {
      callback(new Error('字母加数字,最少不能低于8个字符'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}

// 数字 => 0~6
var sixNum = (rule, value, callback) => {
  if (value != '' && value != null) {
    const reg = /^[0-9]{0,6}$/
    if (!reg.test(value)) {
      callback(new Error('必须由0-6位纯数字组成'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}

// 数字 => 7位
var sevenNum = (rule, value, callback) => {
  if (value != '' && value != null) {
    const reg = /^[0-9]{7}$/
    if (!reg.test(value)) {
      callback(new Error('必须由7位纯数字组成'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}

// 数字 => 1~9
var nineNum = (rule, value, callback) => {
  if (value != '' && value != null) {
    const reg = /^[0-9]{1,9}$/
    if (!reg.test(value)) {
      callback(new Error('必须由1-9位纯数字组成'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}

// 整数
var intNum = (rule, value, callback) => {
  if (value != '' && value != null) {
    const reg = /^\d+$/
    if (!reg.test(value)) {
      callback(new Error('必须为整数'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}

// 保留两位小数
var twoDecimal = (rule, value, callback) => {
  if (value != '' && value != null) {
    const reg = /^(([1-9]{1}\d*)|(0{1}))(\.\d{1,2})?$/
    if (!reg.test(value)) {
      callback(new Error('必须为正数且最多保留两位小数'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}

// 保留两位小数 => ±
var twoDecimalAll = (rule, value, callback) => {
  if (value != '' && value != null) {
    const reg = /^-?(([1-9]{1}\d*)|(0{1}))(\.\d{1,2})?$/
    if (!reg.test(value)) {
      callback(new Error('最多保留两位小数'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}

var IPReg = (rule, value, callback) => {
  if (value != '' && value != null) {
    const reg = /^(((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))))?$/
    if (!reg.test(value)) {
      callback(new Error('IP地址格式不对'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}

var IdCardReg = (rule, value, callback) => {
  if (value != '' && value != null) {
    const reg = /(^\d{8}(0\d|10|11|12)(0[1-9]|[1-2]\d|30|31)\d{3}$)|(^\d{6}(18|19|20)\d{2}(0\d|10|11|12)(0[1-9]|[1-2]\d|30|31)\d{3}(\d|X|x)$)/
    if (!reg.test(value)) {
      callback(new Error('身份证格式不对'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}

// 正整数
var portReg = (rule, value, callback) => {
  if (value != '' && value != null) {
    const reg = /^[+]{0,1}(\d+)$/
    if (!reg.test(value)) {
      callback(new Error('端口号为正整数'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}

// 中文
var chReg = (rule, value, callback) => {
  if (value != '' && value != null) {
    const reg = /^[\u4e00-\u9fa5]$/
    if (!reg.test(value)) {
      callback(new Error('必须为中文字符'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}

// 中文
var flightNumReg = (rule, value, callback) => {
  if (value != '' && value != null) {
    const reg = /^[0-9]{3,4}[a-zA-Z]?$/
    if (!reg.test(value)) {
      callback(new Error('必须为3~4位数字加0~1位字母'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}

// 邮箱验证
var emailReg = (rule, value, callback) => {
  if (value != '' && value != null) {
    // let reg = /^[a-z0-9]+([._\\-]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/
    // 不能以0字开;@ ;@后必须是数字与字母组成,长度为2-10位;结尾一组,字母长度为2-4位;.字母,最少一组,最多三组
    const reg = /^\w+@[a-zA-Z0-9]{2,10}(?:\.[a-z]{2,4}){1,3}$/
    if (!reg.test(value)) {
      callback(new Error('邮箱格式不正确'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}

// [0, 1],小数点后六位小数
var percentReg = (rule, value, callback) => {
  if (value != '' && value != null) {
    const reg = /^(([1]{1}\d*)|(0{1}))(\.\d{1,2})?$/
    if (value > 1) {
      callback(new Error('必须在[0,1]之间且最多保留2位小数'))
    } else {
      if (!reg.test(value)) {
        callback(new Error('必须在[0,1]之间且最多保留2位小数'))
      } else {
        callback()
      }
    }
  } else {
    callback()
  }
}

// 员工密码
var empPwd = (rule, value, callback) => {
  if (value != '' && value != null) {
    const reg = /^(?![0-9]+$)(?![a-z]+$)(?![A-Z]+$)(?!([^(0-9a-zA-Z)])+$).{8,20}$/
    if (value > 1) {
      callback(new Error('由8-20位数字,英文,字符中的两种以上组成'))
    } else {
      if (!reg.test(value)) {
        callback(new Error('由8-20位数字,英文,字符中的两种以上组成'))
      } else {
        callback()
      }
    }
  } else {
    callback()
  }
}

export { fiveMultiple, idReg, empPwd, idRegNew, idRegNews, idRegNewTwe, maxENReg, ndENReg, rdENReg, rdEReg, rthEReg, idNumReg, phoneReg, sevDotTwoDigit, fiveDotTwoDigit, sixDotTwoDigit, fivePositiveDotTwo, threeDotTwoDigit, threeD, fiveD, mustD, degreePos, degreePosTwo, slopePosTwo, passwordReg, loginPasswordReg, sixNum, sevenNum, nineNum, intNum, twoDecimal, twoDecimalAll, IPReg, IdCardReg, portReg, chReg, flightNumReg, emailReg, percentReg, rthReg }
           

继续阅读