vue3中,校验方法之身份证号脱敏、校验数字长度、特殊字符校验

vue3中,校验方法之身份证号脱敏、校验数字长度、特殊字符校验

效果

110344********2860  //身份证号脱敏

代码

身份证号脱敏

index.vue

import { idCardEncipher } from '@src/utils/jiaoyan'

row.idCard = idCardEncipher(row.idCard)

方法

src\utils\jiaoyan.ts

// 校验数字
export function validateNumberFun(rule: any, value: any, callback: any) {
  if (value || rule.required) {
    const v = value || ''
    const pattern = /^[0-9]{1,8}$/
    if (!pattern.test(v)) {
      callback(new Error('请输入1-8位数字'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}
// 路由地址
export function validateCommonPath(value: any, callback: any) {
  const commonNoChars = '~!@#$%^&*()_+|}{":?><,.;' + '’[]\\=-` '
  const noChars = commonNoChars
  const v = value || ''

  for (let i = 0; i < noChars.length; i++) {
    const char = noChars[i]
    if (v.indexOf(char) != -1) {
      callback(new Error('不能使用字符:' + noChars))
      return
    }
  }
}
//特殊字符校验
export function validateCommonText(value: any, callback: any) {
  const commonNoChars = '~!@#$%^&*()_+|}{":?><,./;' + '’[]\\=-` '
  const noChars = commonNoChars
  const v = value || ''
  for (let i = 0; i < noChars.length; i++) {
    const char = noChars[i]
    if (v.indexOf(char) != -1) {
      callback(new Error('不能使用字符:' + noChars))
      return
    }
  }
  const words = ['null', 'NULL']
  for (let i = 0; i < noChars.length; i++) {
    const word = words[i]
    if (v.indexOf(word) != -1) {
      callback(new Error('不能包含: ' + word))
      return
    }
  }
  callback()
}
//校验数字12位字符
export function validateNumberTW(rule: any, value: any, callback: any) {
  if (value || rule.required) {
    const v = value || ''
    const pattern = /^[0-9]{1,12}$/
    if (!pattern.test(v)) {
      callback(new Error('请输入1-12位数字'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}
// 自定义校验销售组织不能为空
export function validateNull(rule: any, value: any, callback: any) {
  if (value || rule.required) {
    const v = value || ''
    const len = String(v).length
    if (len == 2) {
      callback(new Error('销售组织不能为空'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}
// 金额小数点
export function validateNumberF(rule: any, value: any, callback: any) {
  if (value || rule.required) {
    const v = value || ''
    const len = String(v).length
    // const pattern = /(^[1-9]{1}[0-9]*$)|(^[0-9]*\.[0-9]{2}$)/
    if (!len || len > 15) {
      callback(new Error('请输入1-15位数字'))
    } else if (!/^\d+([.]+\d{1,2})?$/.test(v)) {
      callback(new Error('请输入正确金额'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}
export function validateNumberCharacters(rule: any, value: any, callback: any) {
  if (value || rule.required) {
    const v = value || ''
    const pattern = /^[0-9a-zA-Z]*$/
    if (!pattern.test(v)) {
      callback(new Error('请输入字母+数字组合'))
    } else {
      callback()
    }
  } else {
    callback()
  }
}

//身份证号脱敏
export const idCardEncipher = (idCard) => {
  const reg = /^(.{6})(?:\d+)(.{4}$)/
 const maskedIdCard = idCard.replace(reg,'\$1******\$2')
  return maskedIdCard
}
特殊字符校验

index.vue

 <el-form-item
        label="项目名称:"
        prop="item_name"
        :rules="[
          {
            validator: validateCommonText,
            trigger: ['blur', 'change'],
          },
        ]"
      >
        <el-input
          v-model="formInline.item_name"
          maxlength="100"
          placeholder="请输入"
        />
</el-form-item>

<script>
  import { validateCommonText } from '@src/utils/validate'
</script>

src\utils\validate.ts

/**
 * 中文 + 字母 + 数字 + "-" 的组合
 * @param {*} rule
 * @param {*} value
 * @param {*} callback
 */
export function validateRoleRuler(rule: any, value: any, callback: any) {
  const v = value || ''
  const commonNoChars = '~!@#$%^&*()+|}{":?><,./;' + '’[]\\=` '
  const pattern = /[~!@#$%^&*()_+|}{":?><,./\\;'[\]=` 、]|([Nn][Uu][Ll][Ll])/
  if (pattern.test(v)) {
    callback(new Error('不能使用' + commonNoChars))
    return
  }
  callback()
}

/**
 * @description 特定字符校验
 * @param value
 * @returns {boolean}
 */
export function validateCommonText(rule: any, value: any, callback: any) {
  const commonNoChars = '~!@#$%^&*()+|}{":?><,./;' + '_’[]\\=-` '
  const noChars = commonNoChars
  const v = value || ''

  for (let i = 0; i < noChars.length; i++) {
    const char = noChars[i]
    if (v.indexOf(char) != -1) {
      // callback(new Error('不能使用字符:' + noChars))
      callback(new Error('不能使用特殊字符'))
      return
    }
  }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值