微信小程序 公众号 订阅消息 模板 正则 参数校验

自己配置订阅消息模板,如果参数格式不正确,会导致订阅消息发不出去,所以在创建模板的时候需要校验参数格式

订阅通知参数值内容限制说明:微信官方文档
在这里插入图片描述

创建模板:
订阅消息模板
代码:

<script>
const validateRules = {
  letter: /^[a-zA-Z]+$/,
  symbol: /^[ '.,:;*?~`!@#$%^&_+=)(<>{}\-\][/\\\\"|]+$/,
  character: /^[a-zA-Z0-9 '.,:;*?~`!@#$%^&_+=)(<>{}\-\][/\\\\"|]+$/,
  /* eslint-disable max-len */
  datetime: /^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?\d):[0-5]?\d$/,
  /* eslint-disable max-len */
  date: /^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$/,
  time: /^(20|21|22|23|[0-1]?\d):[0-5]?\d$/,
  amount: /^(¥|¥|\$|€|R\$|лв|£|\S\$|ARS\$|₫){1}(\d+(\.\d+)?)+$/,
  mobile: /^(13[0-9]|14[5|7]|15[0|1|2|3|4|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$/,
  /* eslint-disable max-len */
  tel: /^((\+\d{2}-)|(\d{2}-))?((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3})-(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1})|(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1}))$/,
  carNumber: /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{5}[A-Z0-9挂学警港澳]{1}$/,
  number: /\d/,
  chinaAndEng: /^[a-zA-Z\u4e00-\u9fa5]+$/,
  phrase: /^[\u4e00-\u9fa5]+$/,
};
  methods: {
    validateFormat(key, value, cb) {
      let fieldVal = value;
      if (!fieldVal) {
        cb('此项必填');
        return;
      }

      let isValid = false;
      switch (key) {
        case 'thing':
          isValid = fieldVal.length <= 20;
          break;
        case 'number':
          isValid = Number(fieldVal) && fieldVal.length <= 32;
          break;
        case 'letter':
          isValid = validateRules.letter.test(fieldVal) && fieldVal.length <= 32;
          break;
        case 'symbol':
          isValid = validateRules.symbol.test(fieldVal) && fieldVal.length <= 5;
          break;
        case 'character_string':
          isValid = validateRules.character.test(fieldVal) && fieldVal.length <= 32;
          break;
        case 'time':
        case 'date':
          fieldVal = fieldVal.split('~');
          for (let val of fieldVal) {
            val = val.replaceAll('年', '-')
              .replaceAll('月', '-')
              .replaceAll('日', '');
            if ((key === 'date' && !(validateRules.date.test(val) || validateRules.datetime.test(val)))
              || (key === 'time' && !(validateRules.time.test(val) || validateRules.datetime.test(val)))) {
              cb('请按照要求输入');
              return;
            }
          }
          isValid = true;
          break;
        case 'amount':
          fieldVal = fieldVal.replace('元', '');
          isValid = validateRules.amount.test(fieldVal) && fieldVal.length <= 10;
          break;
        case 'phone_number':
          isValid = (validateRules.mobile.test(fieldVal) || validateRules.tel.test(fieldVal)) && fieldVal.length <= 17;
          break;
        case 'car_number':
          isValid = validateRules.carNumber.test(fieldVal) && fieldVal.length <= 8;
          break;
        case 'name':
          isValid = !validateRules.number.test(fieldVal)
            && ((validateRules.phrase.test(fieldVal) && fieldVal.length <= 10)
            || (validateRules.letter.test(fieldVal) && fieldVal.length <= 20)
            || (validateRules.chinaAndEng.test(fieldVal) && fieldVal.length <= 10));
          break;
        case 'phrase':
          isValid = validateRules.phrase.test(fieldVal) && fieldVal.length <= 5;
          break;
        default:
          break;
      }

      if (!isValid) {
        cb('请按照要求输入');
        return;
      }
      cb();
    },
  }</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值