validate 验证

//表单验证,参考https://www.cnblogs.com/bester-ace/articles/10292697.html

export const regular = {
  // 验证自然数
  naturalNumber: /^(([0-9]*[1-9][0-9]*)|(0+))$/,
  naturalNumberMsg: '请输入自然数',
  // 验证数字最小为1
  minOneNumber: /^[1-9]\d*$/,
  minOneNumberMsg: '请输入不小于1的整数',
  // 验证数字最小为1
  minOneNumberNum: /^([1-9]\d{0,2}|0)$/,
  minOneNumberNums: /^([1-9]\d{0,3}|0)$/,
  minOneNumberNumMsg: '请输入0到999内的数字',
  minOneNumberNumMsgs: '请输入0到9999内的数字',

  num0to99999: /^([1-9]\d{0,4}|0)$/,
  num0to99999Msg: '请输入0到99999内的数字',

  num0to9999: /^([1-9]\d{0,3}|0)$/,
  num0to9999Msg: '请输入0到9999内的整数',
  // 验证数字0-99
  num0to99: /^\d{1,2}$/,
  num0to99Msg: '0~99的整数,单位秒',

  //验证数字最小为100001
  minNumber100001: /^([1-9]\d{4}[1-9]|[1-9]\d{5,9}[0-9]|0)$/,
  minNumber100001Msgs: '请输入0或大于100000的整数,并且位数小于11位',
  // 英文
  english: /[a-zA-Z]/,
  englishMsg: '请输入英文字母',
  // 座机
  telephone: /^\d{3}-\d{7,8}|\d{4}-\d{7,8}$/,
  telephoneMsg: '请输入正确的座机号',
  //手机号码(第一位是‘1’即认为手机号正确)
  mobile: /^1\d{10}$/,
  mobileMsg: '请输入正确的手机号',
  phone: /^1(3|4|5|6|7|8|9)\d{9}$/,
  phoneMsg: '请输入11位合法手机号',
  email: /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,7})$/,
  emailMsg: '请输入正确邮箱',
  // 银行卡号码
  bankCard: /^[1-9]\d{9,19}$/,
  bankCardMsg: '请输入正确的银行卡号码',
  // 证件号码
  IDNumber:
    /^[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]$/,
  IDNumberMsg: '请输入正确的证件号码',
  //
  LicenseNumber:
    /(^(?:(?![IOZSV])[\dA-Z]){2}\d{6}(?:(?![IOZSV])[\dA-Z]){10}$)|(^\d{15}$)/,
  LicenseNumberMsg: '请输入正确的营业执照号',

  orgCode: /([A-Z-0-9]{8}-[A-Z-0-9])|([A-Z-0-9]{9}$)/,
  orgCodeMsg: '请输入正确的组织机构码',
  // 身份证号码,包括15位和18位的
  IDCard:
    /(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{7}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}$)/,
  IDCardMsg: '请输入正确的身份证号码',
  // QQ号码
  qq: /^[1-9]\d{4,11}$/,
  qqMsg: '请输入正确的QQ号码',
  // 网址, 仅支持http和https开头的
  url: /^(http|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-.,@?^=%&:/~+#]*[\w\-@?^=%&/~+#])?$/,
  urlMsg: '请输入以http和https开头的网址',
  // 0到20位的英文字符和数字
  enNum0to20: /^[a-z0-9A-Z]{0,20}$/,
  enNum0to20Msg: '请输入20位以内的英文字符和数字',
  // 2到100位的中英文字符和空格
  cnEnSpace2to100: /^[a-zA-Z\u4E00-\u9FA5\s*]{2,100}$/,
  cnEnSpace2to100Msg: '请输入2到100位的中英文字符和空格',
  // 数字和换行符
  numLinefeed: /^[0-9\n*]+$/,
  numLinefeedMsg: '请输入数字和换行符',
  // 255位以内的字符
  char0to255: /^.{0,255}$/,
  char0to255Msg: '请输入255位以内的字符',
  // 200位以内的字符
  char0to200: /^.{0,200}$/,
  char0to200Msg: '最多输入200个文字',
  //0到60位以内的字符
  char0to30: /^.{0,30}$/,
  char0to30Msg: '最多输入30个文字',
  char0to10: /^.{0,10}$/,
  char0to10Msg: '最多输入10个文字',

  char0to3: /^.{0,3}$/,
  char0to3Msg: '最多输入3位数',

  // 1到50位以内的字符
  char0to50: /^[\u4e00-\u9fffa-zA-Z0-9]{1,50}$/,
  char0to50Msg: '请输入1-50位以内的文本字符(不可使用符号)',

  specialChar0to30: /^[\u4e00-\u9fffa-zA-Z0-9]{1,30}$/,
  specialChar0to30Msg: '请输入1-30位以内的文本字符(不可使用符号)',

  domainName:
    /^(?=^.{3,255}$)[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+$/,
  domainNameMsg: '企业域名格式不正确',
  // 1到50位的英文字符和数字
  enNum0to50: /^[a-z0-9A-Z]{1,50}$/,
  enNum0to50Msg: '请输入1-50位以内的英文字符或数字',
  // 1到18位数字、字母
  enNum0to18: /^[a-z0-9A-Z]{1,18}$/,
  enNum0to18Msg: '请输入18位字符长度的数字或字母',
  baseUrl: 'http://172.18.1.13:18080',
  //支持 http https www 开头的url
  checkUrl: /[a-zA-z]+:\/[^\s]*/,
  checkUrlMsg: '请输入正确的url',
  //ip 校验
  checkIp:
    /^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$/,
  checkIpMsg: '请输入正确的IP',
  port: /^([0-9]|[1-9]\d{1,3}|[1-5]\d{4}|6[0-4]\d{4}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$/,
  portMsg: '请输入正确的端口号',

  // unSpecial:/^[\u0391-\uFFE5A-Za-z\d]+$/,
  unSpecial: /^[\u4e00-\u9fa5A-Za-z\d]+$/,
  unSpecialMsg: '不可使用符号',
  checkCode: /^[0-9]{6}$/,
  checkCodeMsg: '验证码格式不正确',
  password:
    /^(?![0-9]+$)(?![a-z]+$)(?![A-Z]+$)(?![,\.#@%'\+\*\-:;^_`]+$)[,\.#%'\+\*\-:;^_`0-9A-Za-z]{6,16}$/,
  passwordMsg:
    '密码必须是数字、字母、符号至少两种以上的组合(6-16位),请重新输入',
}
/**
 * @description 排序值验证,排序值不可以大于255
 */
export const validateOrder = function (rule, value, callback) {
  if (parseInt(value) > 255) {
    return callback(new Error('排序值不可以大于255'))
  } else {
    callback()
  }
}

String.prototype.gllength = function () {
  let len = 0
  for (let i = 0; i < this.length; i++) {
    if (this.charCodeAt(i) > 127 || this.charCodeAt(i) == 94) {
      len += 2
    } else {
      len++
    }
  }
  return len
}
export const validategllength2And10 = (rule, value, callback) => {
  if (value == undefined) {
    callback()
  }
  if (value.trim().gllength() > 10 || value.trim().gllength() < 2) {
    callback(new Error('请输入2-10个字符(1汉字=2字母=2字符)'))
  } else {
    callback()
  }
}

export const validategllength2And30 = (rule, value, callback) => {
  if (value == undefined) {
    callback()
  }
  if (value.trim().gllength() > 30 || value.trim().gllength() < 2) {
    callback(new Error('请输入2-30个字符(1汉字=2字母=2字符)'))
  } else {
    callback()
  }
}

export const valid2And60 = (rule, value, callback) => {
  if (value === undefined || value === null || value === '') {
    callback()
  }
  if (value.trim().gllength() > 60) {
    callback(new Error('用户名称不能超过60个字符'))
  } else {
    callback()
  }
}

export const validategllength2And100 = (rule, value, callback) => {
  if (value === undefined || value === null) {
    callback()
  } else {
    var textValue = value.replace(/[\r\n]/g, '') //去除换行.
    if (
      (textValue.trim().gllength() <= 100 &&
        textValue.trim().gllength() >= 2) ||
      textValue.trim().gllength() === 0
    ) {
      callback()
    } else {
      callback(new Error('请输入2-100个字符(1汉字=2字母=2字符)'))
    }
  }
}
export const validategllength100 = (rule, value, callback) => {
  if (value === undefined || value === null) {
    callback()
  } else {
    var textValue = value.replace(/[\r\n]/g, '') //去除换行.
    if (
      textValue.trim().gllength() <= 100 ||
      textValue.trim().gllength() === 0
    ) {
      callback()
    } else {
      callback(new Error('请输入不大于100个字符(1汉字=2字母=2字符)'))
    }
  }
}

export const validategllength2And150 = (rule, value, callback) => {
  if (value == undefined) {
    callback()
  }
  if (value.trim().gllength() > 150) {
    callback(new Error('最多输入150个字符(1汉字=2字母=2字符)'))
  } else {
    callback()
  }
}

export const validategllength2And60 = (rule, value, callback) => {
  if (value === undefined || value === null) {
    callback()
  } else {
    var textValue = value.replace(/[\r\n]/g, '') //去除换行.
    if (
      (textValue.trim().gllength() <= 60 && textValue.trim().gllength() >= 2) ||
      textValue.trim().gllength() === 0
    ) {
      callback()
    } else {
      callback(new Error('请输入2-60个字符(1汉字=2字母=2字符)'))
    }
  }
}
export const validategllength2And20 = (rule, value, callback) => {
  if (value === undefined || value === null) {
    callback()
  } else {
    var textValue = value.replace(/[\r\n]/g, '') //去除换行.
    if (
      (textValue.trim().gllength() <= 20 && textValue.trim().gllength() >= 2) ||
      textValue.trim().gllength() === 0
    ) {
      callback()
    } else {
      callback(new Error('请输入2-20个字符(1汉字=2字母=2字符)'))
    }
  }
}

export const emailLength6And50 = (rule, value, callback) => {
  if (value === undefined || value === null) {
    callback()
  } else {
    var textValue = value.replace(/[\r\n]/g, '') //去除换行.
    if (
      (textValue.trim().gllength() <= 50 && textValue.trim().gllength() >= 6) ||
      textValue.trim().gllength() === 0
    ) {
      callback()
    } else {
      callback(new Error('请输入6-50位长度邮箱'))
    }
  }
}

/*let regEmail = new RegExp(/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,7})$/);
if(!this.Register2Form.email || !regEmail.test(this.Register2Form.email)){
    this.errorMesage('请输入正确邮箱')
    return
}
if(this.Register2Form.email.length < 6 || this.Register2Form.email.length > 50){
    this.errorMesage('请输入6-50位长度邮箱')
    return
}*/

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章