JS 正则匹配二次replace


const keyword = '(某个字符串)'
const reg = /<span class="logs>(.+?)<\/span>/g;
newStr = newStr.replace(reg, word => {
    const newRe = new RegExp(keyword, 'g');
    return word.replace(newRe, `<span style="color:red;">${keyword}</span>`);
});
如上的正则替换中,我想匹配一长串字符串中所有'<span class="logs>(.+?)<\/span>'这种格式的,
然后再匹配出来的所有字符串中进行二次匹配,
但是这次的匹配只匹配span标签体内的内容,
在标签体内容中查找keyword关键字,如果匹配到再进行替换,
所以我该如何只对第一次匹配到的内容中的(.+?)部分进行二次替换?

您可以使用 (?:) 来捕获多个可能的子字符串,并使用正则表达式 .+? 来匹配子字符串,而不是使用 .+ 来匹配一个字符串中的任意字符。


```javascript
const keyword = '<span class="logs>(.+?)<\/span>';  
const reg = /<span class="logs>(.+?)<\/span>/g;  
const newStr = newStr.replace(reg, (match, group1) => {  
  const newMatch = match.replace(group1, `<span style="color:red;">${group1}</span>`);  
  return newMatch;  
});  
console.log(newStr); // 输出: <span style="color:red;">(某个字符串)</span>

```

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7724384
  • 你也可以参考下这篇文章:js-正则替换replace
  • 除此之外, 这篇博客: JS基础 基本类型中的 replace 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • replace 方法用于字符串的替换操作

    let str = 'wgchen.blog.csdn.net';
    web = str.replace("wgchen", "willem");
    console.log(web); // willem.blog.csdn.net
    

    默认只替换一次,如果全局替换需要使用正则。

    let str = "2023/02/12";
    console.log(str.replace(/\//g, "-")); // 2023-02-12
    

    使用字符串替换来生成关键词链接

    const word = ["php", "css"];
    const string = "我喜欢学php与css知识";
    
    const title = word.reduce((pre, word) => {
      return pre.replace(word, `<a href="?w=${word}">${word}</a>`);
    }, string);
    
    document.body.innerHTML += title;
    

    在这里插入图片描述
    使用正则表达式完成替换

    /*正则表达式修饰符
    /u 表示按unicode(utf-8)匹配(主要针对多字节比如汉字)
    /g 全局匹配(全文查找出现的所有匹配字符,返回的结果可以是多个;如果不加/g最多只会匹配一个)
    */
    let res = "wgchen.博客.csdn.net".replace("博客", str => {
      return "blog";
    });
    console.log(res); // wgchen.blog.csdn.net