Skip to main content

批量正则校验

/** 批量正则校验返回结果 */interface CheckRulesRes {  /** 校验结果存在错误 */  hasError: boolean  /** 错误消息 */  message: string  /** 错误字段 */  key: string  /** 错误元数据 */  data: CheckRulesItem | {}}
/** 批量正则校验配置 */interface CheckRulesItem {  /** 错误字段 */  key: string  /** 空数据返回文案 */  nullMessage?: any  /** 空字段校验 */  isNull?: boolean  /** 正则 */  reg?: RegExp  /** 正则校验错误返回文案 */  message?: any}
/** * 批量正则校验 * @param {Object} datas 需要校验的数据 * @param {Array} rules example:[{ key: 'name',isNull:true, reg: /^.+$/, message: 'name is null!'}] */export function checkRules(datas: any, rules: Array<CheckRulesItem>): CheckRulesRes {  let res: CheckRulesRes = {    hasError: false,    message: '',    key: '',    data: {},  }  for (let i = 0; i < rules.length; i++) {    const data = rules[i]    const { key, reg, message, isNull, nullMessage } = data    const value = datas[key]    res.key = key    res.data = data    if (isNull && (value === '' || value === null || value === undefined)) {      res.hasError = true      res.message = nullMessage || message      return res    }
    if (reg && !reg.test(value)) {      res.hasError = true      res.message = message      return res    }  }
  return res}