【问题标题】:I am getting error while Regex replace javascript正则表达式替换 javascript 时出现错误
【发布时间】:2022-01-01 10:18:30
【问题描述】:

var newInput = '{"id":"1","value":"Admin","prefix":"@"} asdas {"id":"24","value":"Ibiere Banigo","prefix":"@"}';

var gettingJson = newInput.match(/\{\"(.*?)\"\}/g);
var finalString = '';
$.each(gettingJson, function (index, value) {
   var data = JSON.parse(value);
   finalString = newInput.replace(/\{\"(.*?)\"\}/g, '@[' + data.id + ']');
});
console.log(finalString);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

这是我的代码,我正在尝试用 @[id] 替换括号,它正在替换它,但对于所有人来说,我希望我的输出是

@[1] someone new @[2]

但是我得到了

@[2] someone new @[2]

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    问题

    您的方法的问题是 replace 方法替换了所有匹配的匹配项。

    解决方案

    使用replace方法callback

    replace(regexp, replacerFunction)
    

    var newInput = '{"id":"1","value":"Admin","prefix":"@"} asdas {"id":"24","value":"Ibiere Banigo","prefix":"@"}';
    
    var finalString = newInput.replace(/\{\"(.*?)\"\}/g, match => {
      var data = JSON.parse(match);
      return '@[' + data.id + ']'
    })
    
    console.log(finalString);

    【讨论】:

      猜你喜欢
      • 2017-11-22
      • 1970-01-01
      • 2010-11-12
      • 2016-09-23
      • 1970-01-01
      • 1970-01-01
      • 2011-09-01
      • 2014-01-26
      • 1970-01-01
      相关资源
      最近更新 更多