/* eslint-disable no-useless-escape */
/* eslint-disable no-irregular-whitespace */
/*
 * @Page: 校验姓名
  1.可以是中文
	2.可以是英文，允许输入点（英文名字中的那种点）， 允许输入空格
  3.中文和英文不能同时出现
  4.长度在20个字符以内
 * @Author: wangyadi
 * @Date: 2020-04-01 10:08:38
 * @Last Modified by: wangyadi
 */
export function verifyName(str: string) {
  const reg = /(^[\u4e00-\u9fa5]{1}[\u4e00-\u9fa5\\.·。]{0,8}[\u4e00-\u9fa5]{1}$)|(^[a-zA-Z]{1}[a-zA-Z\s]{0,8}[a-zA-Z]{1}$)/
  return reg.test(str)
}

/*
 * @Page: 校验邮箱
 * @Author: wangyadi
 * @Date: 2020-04-01 10:08:38
 * @Last Modified by: wangyadi
 */

export function verifyEmail(rule: any, value: string, data: any, cb: (arg0: string) => void) {
  const reg = /(['\"]{1,}.+['\"]{1,}\s+)?<?[\w\.\-]+@([\w\-]+\.)+[A-Za-z]{2,}>?/

  // if (!value || value.length <= 0) cb('请输入邮箱')
  if (String(value).indexOf('-') !== -1 && !reg.test(value)) {
    cb('请输入合法的邮箱')
  }
  return true
}

/*
 * @Page: 校验手机号
 * @Author: wangyadi
 * @Date: 2020-04-01 10:08:38
 * @Last Modified by: wangyadi
 */
export function validatorMobile(rule: any, value: string, data: any, cb: (arg0: string) => void) {
  if (!value || value.length <= 0) cb('请输入手机号')
  if (String(value).indexOf('-') !== -1 && !/^(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}$/.test(value)) {
    cb('请输入合法的手机号')
  }
  if (String(value).indexOf('-') === -1 && !/^1[3456789]\d{9}$/.test(value)) {
    cb('请输入合法的手机号')
  }
  return true
}

/*
 * @Page: 校验密码 6-20位 字母 数字或符号的组合
 * @Author: wangyadi
 * @Date: 2020-04-01 10:08:38
 * @Last Modified by: wangyadi
 */
export function verifyPwd(rule: any, value: string, data: any, cb: (arg0: string) => void) {
  if (value === undefined || value.length <= 0) {
    cb('请输入密码')
  }
  const regExp = /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,.\/]).{8,64}$/
  if (!regExp.test(value)) {
    cb('6-20位字母、数字或符号的组合')
  }
  return true
}

/*
 * @Page: 校验资产金额等
  非负浮点数 保留1-4位小数
 * @Author: wangyadi
 * @Date: 2020-04-01 10:08:38
 * @Last Modified by: wangyadi
 */
export function verifyPointNumber(str: string) {
  const reg = /^\d+(\.\d{1,4})?$/
  return reg.test(str)
}

/*
 * @Page: 校验统一社会信用代码
 * @Author: wangyadi
 * @Date: 2020-04-01 10:08:38
 * @Last Modified by: wangyadi
 */
export function verifyCreditCode(str: string) {
  const reg = /[^_IOZSVa-z\W]{2}\d{6}[^_IOZSVa-z\W]{10}$/g
  return reg.test(str)
}

/*
 * @Page: 校验正整数 含0
 * @Author: wangyadi
 * @Date: 2020-04-01 10:08:38
 * @Last Modified by: wangyadi
 */
export function verifyInteger(str: string) {
  const reg = /^(0|\+?[1-9][0-9]*)$/
  return reg.test(str)
}

/*
 * @Page: 校验网址
 * @Author: wangyadi
 * @Date: 2020-04-01 10:08:38
 * @Last Modified by: wangyadi
 */
export function validatorLink(rule: any, value: string, data: any, cb: (arg0: string) => void) {
  const reg = /(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/
  if (!reg.test(value)) {
    return cb('格式不正确')
  }
  return true
}

// 校验身份证号
export function validatorCard(rule: any, value: string, data: any, cb: (arg0: string) => void) {
  if (value === undefined || value.length <= 0) return cb('请输入正确的身份证号')
  const regExp = /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/
  if (!regExp.test(value)) {
    return cb('请输入正确的身份证号')
  }
  return true
}

// 校验正数 负数 小数 0
export function validatorNumber(rule: any, value: string, data: any, cb: (arg0: string) => void) {
  if (value === undefined || value.length <= 0) return cb('请输入正确的数字')
  if (!/^[-+]?[0-9]+(\.[0-9]+)?$/.test(value)) {
    return cb('请输入正确的数字')
  }
  return true
}

/*
 * @Page: 校验登录手机号
 * @Author: wangyadi
 * @Date: 2020-04-01 10:08:38
 * @Last Modified by: wangyadi
 */
export function validatorLoginMobile(rule: any, value: string, data: any, cb: (arg0: string) => void) {
  if (!value || value.length <= 0) cb('请输入手机号')
  if (String(value).indexOf('-') !== -1 && !/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/.test(value)) {
    cb('请输入合法的手机号')
  }
  return true
}
