当前位置: 首页 > article >正文

【vuejs】富文本框输入的字符串按规则解析填充表单

今天遇到一个批量添加信息的需求,按照格式要求解析后填充到表单中,不符合规则的直接过滤掉

在这里插入图片描述

在这里插入图片描述

注:添加的信息都是随机生成,不用于实际用途

这是弹框输入的文本解析代码

export const editValToArr = (value, bankArr) => {
  return new Promise((res, rej) => {
    setTimeout(() => {
      value = replaceBRwithP(value);
      let val = value.replace(/(<p><br\/><\/p>)/gi, '');
      // 获取包含<p>标签的父元素
      var parentElement = document.createElement('div');
      parentElement.innerHTML = val;
      // 获取所有的<p>标签
      var pElements = parentElement.getElementsByTagName('p');
      // 将文本内容转换为数组
      var arr = Array.from(pElements).map(function (p) {
        return p.innerText;
      });
      // 定义临时存储乘机人信息的数组
      let passengerArr = [];
      for (let index = 0; index < arr.length; index++) {
        const element = arr[index];
        if (sumStr(element, '/') === 2) {
          let arrStr = element.split('/');
          let obj = {
            PassengerName: filterInput(arrStr[0].trim().toUpperCase()),
            CertificateType: 1,
            IdNumber: filterInput(arrStr[1].trim().toUpperCase()),
            CardBin: findBankId(bankArr, arrStr[2].trim()),
          };
          obj.CardBin !== '' && passengerArr.push(obj);
        }
      }
      res(passengerArr);
    }, 20);
  });
};


// 替换所有的 <br/> 标签为 <p></p>
function replaceBRwithP(htmlContent) {
  return htmlContent.replace(/<br\s*\/?>/gi, '<br/></p><p>');
}

// 过滤输入字符串的特殊字符
function filterInput(input) {
  return input.replace(/[^\u4e00-\u9fa5a-zA-Z0-9\s\r\n\\/]/g, '');
}

function findBankId(arr, name) {
  let index = arr.findIndex(item => item.nameArr.includes(name));
  return index === -1 ? '' : arr[index].CardBin;
}

	/**
     * @desc 确定按钮事件
     */
    async confim() {
      // // 验证是否输入了乘机人信息
      if (isNull(this.info_)) return (this.errorStr = '请输入信息');
      if (StrToArr(this.info_).length > 100) return (this.errorStr = '最多可添加100行');
      this.btnLoading = true;
      let data = await editValToArr(this.info_, this.bankArr);
      this.cancel();
      this.btnLoading = false;
      this.$emit('setValue', data);
    }

如果这篇文章对你有所帮助,欢迎点赞、分享和留言,让更多的人受益。感谢你的细心阅读,如果你发现了任何错误或需要补充的地方,请随时告诉我,我会尽快处理。


http://www.kler.cn/news/364580.html

相关文章:

  • C语言_通讯录_进阶
  • [Linux网络编程]04-多进程/多线程并发服务器思路分析及实现(进程,信号,socket,线程...)
  • 重学SpringBoot3-Reactive-Streams规范
  • uni-app 开发微信小程序,实现图片预览和保存
  • Java8中Stream、Function、Opotions特性使用案例
  • WISE:重新思考大语言模型的终身模型编辑与知识记忆机制
  • [C++进阶数据结构]红黑树(半成品)
  • oneplus3t-android_framework
  • 中间件-概念
  • 高翔【自动驾驶与机器人中的SLAM技术】学习笔记(十二)拓展图优化库g2o(一)框架
  • 3种方法,教你用Pytest更改自动化测试用例执行顺序
  • 192×144像素是几寸照片?如何手机拍照制作
  • 【python实操】python小程序之参数化以及Assert(断言)
  • General Purpose I/O Ports and Peripheral I/O Lines (Ports)
  • JVM成神之路
  • 测试学习-测试分类
  • Spring Boot框架中小企业设备监控系统开发
  • c++中虚函数表属于类还是属于对象?
  • Ubuntu20.04 更新Nvidia驱动 + 安装CUDA12.1 + cudnn8.9.7
  • 【数据结构与算法】力扣 46. 全排列
  • 中国人寿财险青岛市分公司引领科技金融新风尚
  • HarmonyOS 5.0应用开发——应用打包HAP、HAR、HSP
  • 新160个crackme - 082-phox.1
  • Elasticsearch在分布式集群中进行数据分片的策略能否完全避免数据热点?数据分片分布不均会导致性能瓶颈吗?如何通过实践优化分片分布?
  • 本地生活平台开发搭建方案 同城O2O电商平台推广运营
  • OpenCV视觉分析之运动分析(2)背景减除类:BackgroundSubtractorKNN的使用