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
}*/

 

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