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

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

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

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

js 复制代码
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;
}
js 复制代码
	/**
     * @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);
    }

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

相关推荐
念何架构之路1 分钟前
zap扩展生态与总结
java·前端·数据库
独孤九剑打醒他16 分钟前
【原创开源】【概念设计】源 - 栅 - 漏 - 栅 - 源 横向双栅 MOS,低压交流多值逻辑芯片探索
前端·其他·架构·开源·硬件工程
mantou1321 小时前
我给 AI Agent 做了个「油猴」:让 Claude Code / Codex 直接用你已登录的浏览器
前端·javascript·后端
默_笙1 小时前
🍕 一个主编、三个工种、两本手册:搭一支 AI 调研队
前端·javascript
纸片人1 小时前
Blender 建模 + Three.js 展示:和 AI 一起做一个光储充超充站数字孪生大屏
前端
智能直播1 小时前
网络RTMP拉流不卡顿、声音不同步?一文讲透缓冲区、时间戳与MEDAI V2实战调优
前端
第七页独白1 小时前
汽车零件厂如何通过 QMS 真正落地 IATF 16949——QMS软件系统:品质检验-内审稽核-8d客诉管理:全星质量管理软件系统
java·前端·数据库
纸片人1 小时前
只用 three.js + OpenStreetMap,手搓一个「成都城市 3D」数据大屏
前端
星若生辉1 小时前
Hugo 静态站点搭建|从本地调试到上线部署实操指南
前端
沐浴露z1 小时前
Agent 响应延迟过高?从工具治理角度提供两条思路
前端·网络