【问题标题】:Replace dynamic value between dynamic characters in Javascript替换Javascript中动态字符之间的动态值
【发布时间】:2020-11-27 04:38:45
【问题描述】:

我在这样的字符之间有一个字符串:

new/set/25/
type/22/set/3/
aa/23/mine/set/9/yous
set/34
/dol/22/mmm/sss/set/23

它有一个像这样的值模式:

set/{n}

我尝试使用此函数替换 {n} 值:

var pathname = 'new/set/9/'   
pathName = pathName.replace(/(/\//gset/\//g)([0-9]+)/, '$1' + '5';
//expected result = new/set/5/

但它不起作用

【问题讨论】:

    标签: javascript regex string


    【解决方案1】:

    您可以使用String.prototype.match 方法将所有捕获括号值替换为任何其他结果,如下所示

    let pattern = /set\/(\d+)\/?/;
    
    let chaines = [
      "new/set/25/",
      "type/22/set/3/",
      "aa/23/mine/set/9/yous",
      "set/34",
      "dol/22/mmm/sss/set/23"
    ];
    
    chaines.map(c => {
      let matches = c.match(pattern);
      console.log(c.replace(matches[1], 5));
    });

    【讨论】:

      【解决方案2】:

      试试这个。

      let pathname = `uid/22/new/set/203/key/90`;
      pathname = pathname.replace(/(?<=set\/)\d+(?=\/)/g, 5);
      
      console.log(pathname);

      【讨论】:

      • 如何使用替换功能,因为我打算把这个 'new/set/{n}' 字符串放在 url 中
      • @Padawan 感谢您的参考,但是当我有这样的字符串时:uid/22/new/set/203/key/90 它将变为 uid/5/new/set/5/key/90 而不是 uid/22/new/set/5/key/90
      【解决方案3】:

      试试这个正则表达式模式(?&lt;=set\/)\d+(?=\/)

      Demo

      console.log('uid/22/new/set/203/key/90'.replace(/(?&lt;=set\/)\d+(?=\/)/g,'78'))

      【讨论】:

      • 感谢您的回答,如果动态 url 中的字符串例如我有这样的字符串 uid/22/new/set/203/key/90
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-08
      • 1970-01-01
      相关资源
      最近更新 更多