正则${}匹配替换

需求:将字符串中的占位符 ${} 匹配替换为input框,输入后将输入的内容插入到字符串中

1.记录所需要替换的占位符的位置,使用正则查找 /(?<=\$\{).*?(?=\})/g

//二位数组的查找

 let _this = this
      forEach(this.jsaList, (item, index) => {
        forEach(item.measuresList, (_item, _index) => {
          var num = -1
          if (/(?<=\$\{).*?(?=\})/g.test(_item.name)) {
            _item.name.replace(/(?<=\$\{).*?(?=\})/g, function () {
              num += 1
              _this.recordList.push([index, _index, num]) //index为父数组的位置,_index为子数组的位置,num为当前字符串的第几个输入框
              return `<input class='blank' type='text' style=border:none;border-bottom:1px solid #ccc;outline:none' value="${_item.strnum[num]}"></input>`
            })
          }
        })
      })

2.替换字符串中的站位符,使用v-html编译

                name: subItem,//字符串内容
                strnum: subItem.match(/(?<=\$\{).*?(?=\})/g),//将匹配到的站位符中的内容存起来
                str: /(?<=\$\{).*?(?=\})/g.test(subItem)
                  ? subItem.replace(/(?<=\$\{).*?(?=\})/g, function () {
                      return `<input class='blank' type='text' style='border:none;border-bottom:1px solid #ccc;outline:none' ></input>`
                    })
                  : subItem,//v-html执行内容

3.回显 将占位符中的内容回显到input框中

                var num = -1
              _item.str = _item.name.replace(
                /(?<=\$\{).*?(?=\})/g,
                function () {
                  num += 1
                  return `<input class='blank' type='text' style='border:none;border-bottom:1px solid #ccc;outline:none' value="${_item.strnum[num]}"></input>`
                }
              )

4.提交时,获取当前所有input框的内容,进行更新

let arr = document.getElementsByClassName('blank')
      let arrTxt = []
      for (let i = 0; i < arr.length; i++) {
        arrTxt.push(arr[i].value)
      }
      forEach(this.recordList, (item, index) => {
        this.jsaList[item[0]].measuresList[item[1]].strnum[item[2]] =
          arrTxt[index]
      })

5.将更新后的信息回显到字符串中

forEach(this.jsaList, (item) => {
        forEach(item.measuresList, (_item) => {
          var num = -1
          _item.name = _item.name.replace(/(?<=\$\{).*?(?=\})/g, function () {
            num += 1
            return `${_item.strnum[num]}`
          })
        })
      })

然后就没了~~~~~~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值