Newer
Older
safe_production_front / src / utils / validate.ts
/**
 * 判断是否为空
 * @param val 待判断值
 * @returns 是否合法
 */
export const isRequired = (val: string): boolean => {
  return val !== ''
}

// 提取url params参数
export function queryString(str: string) {
  const params = str.split('?')[1] // 截取?号后的字符串即name=itclanCoder&study=css
  const param = params.split('&') // 通过&符号进行分割即["name=itclanCoder", "study=css"]
  const obj: { [key: string]: string } = {} // 用一个对象存储目标值
  for (let i = 0; i < param.length; i++) {
    // 循环遍历截取出来的param数组
    const paramsA = param[i].split('=') // 通过split,=继续对数组params每一项进行分割,生成数组["name", "itclanCoder"]
    const key = paramsA[0] // 取数组项["name", "itclanCoder"]中第0位,即name
    const value = paramsA[1] // 取数组项["name", "itclanCoder"]中第1位,即itclanCoder
    obj[key] = value
  }
  return obj
}
// 去除字符串中的特殊符号
export function stripscript(s: string) {
  var pattern = /[[\]\/:*?"<>|#]/
  var rs = ''
  for (var i = 0; i < s.length; i++) {
    rs = rs + s.substr(i, 1).replace(pattern, '')
  }
  return rs
}

//
/**
 * 判断是否为整数
 * @param value
 * @returns 是否合法
 */
export const isInteger = (value: any) => {
  return Number.isInteger(Number(value))
}

/**
 * 判断是否为ip
 * @param ip 待判断
 * @returns 是否合法
 */
export const isIp = (ip: string): boolean => {
  var rep
    = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/
  return rep.test(ip)
}

/**
 * 判断端口是否合法
 * @param port 待判断端口
 * @returns 是否合法
 */
export const isPort = (port: number | string): boolean => {
  if (!isInteger(port) || port > 65535 || port < 1) {
    return false
  }
  return true
}

/**
 * 判断ip+端口是否合法
 * @param ipPort 待判断端口
 * @returns 是否合法
 */
export const isIpPort = (ipPort: any): boolean => {
  const rep = /^(?:(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)|localhost|[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9](?:\.[a-zA-Z]{2,})+):(?:[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$/
  return rep.test(ipPort)
}

//
/**
 * 判断整数范围
 * @param value 待判断数值
 * @param max 最大值
 * @param min 最小值
 * @returns 是否符合数值范围
 */
export const isInRange = (value: number, max: any, min: any): boolean => {
  if (!isInteger(value) || value > max || min > value) {
    return false
  }
  return true
}

/**
 * 判断整数,小数范围
 * @param value 待判断数值
 * @param max 最大值
 * @param min 最小值
 * @returns 是否符合数值范围
 */
export const isInRangeNum = (value: number, min = 0, max = 10): boolean => {
  if (value > max || value < min) {
    return false
  }
  return true
}

/**
 * 验证小写字母
 * @param str
 * @returns
 */
export function validateLowerCase(str: string) {
  const reg = /^[a-z]+$/
  return reg.test(str)
}

/* 验证大写字母 */
export function validateUpperCase(str: string) {
  const reg = /^[A-Z]+$/
  return reg.test(str)
}

/* 验证大小写字母 */
export function validateAlphabets(str: string) {
  const reg = /^[A-Za-z]+$/
  return reg.test(str)
}

/**
 * 验证邮箱
 * @param email
 * @returns {boolean}
 */
export function validateEmail(email: string) {
  const re
    = /^(([^<>()\[\]\\.,;:\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,}))$/
  return re.test(email)
}

/**
 * 验证手机号
 * @param phone
 * @returns {boolean}
 */
export function validateMobile(phone: string) {
  const re = /^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$/
  return re.test(phone)
}

/**
 * 校验身份证号
 * @param value
 * @returns
 */
export function validateIdCardNo(value: string) {
  const re
    = /^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/
  return re.test(value)
}
/**
 *
 * @param value 验证电话号码
 * @returns
 */
export function validatePhone(value: string) {
  const re
    = /(\d{11})|^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3})-(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1})|(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1}))$/
  return re.test(value)
}

/**
 * 强类型密码验证
 */
export function validatePasswordStrong(value: string) {
  const re
    = /^(?![0-9]+$)(?![a-zA-Z]+$)(?![0-9a-zA-Z]+$)(?![0-9\\W]+$)(?![a-zA-Z\\W]+$)[0-9A-Za-z\\W]{6,18}$/
  return re.test(value)
}
/**
 * 弱类型密码验证
 */
export function validatePasswordWeak(value: string) {
  const re = /[0-9A-Za-z\\W]{6,18}$/
  return re.test(value)
}

// 密码强度校验,最少6位,包括至少1个大写字母,1个小写字母,1个数字,1个特殊字符

export function validatePassword(value: string) {
  const re
    = /^\S*(?=\S{6,})(?=\S*\d)(?=\S*[A-Z])(?=\S*[a-z])(?=\S*[!@#$%^&*? ])\S*$/
  return re.test(value)
}