保留包含特定单词的内容,替换除此之外的所有内容的JavaScript正则表达式
P粉463824410
P粉463824410 2024-04-01 11:06:23
[JavaScript讨论组]

我想这很简单,但我正在努力应对以下情况:

字符串(HTML 作为文本传递):

text
text
  • text

现在我需要将每个 text
替换为

text
除非文本位于
  • /
      内。

      .replace(/(.*?)
      /g, '
      $1
      ')

      这工作正常,但如何防止

      • text

      被替换?

  • P粉463824410
    P粉463824410

    全部回复(2)
    P粉488464731

    "您无法使用正则表达式解析 [HTML]。[...]您是否尝试过使用 [HT]ML而是解析器?

    (可以在下面的代码片段中找到更简洁的版本)

    function replaceTextBrWithDiv(html) {
      // Create an element that acts as a parser
      const parser = document.createElement('div');
      parser.innerHTML = html;
    
      // Modify an array-like when iterating over it may cause some issues.
      // Copy it first.
      const childNodes = [...parser.childNodes];
    
      // Index-based iterating
      for (let index = 0; index )
          index++;
        }
      }
    
      return parser.innerHTML;
    }
    

    尝试一下:

    console.config({ maximize: true });
    
    function replaceTextBrWithDiv(html) {
      const parser = document.createElement('div');
      parser.innerHTML = html;
    
      parser.childNodes.forEach((node, index, nodes) => {
        const nextNode = nodes[index + 1];
        
        if (node instanceof Text && nextNode instanceof HTMLBRElement) {
          const div = document.createElement('div');
          div.appendChild(node);
          nextNode.replaceWith(div);
        }
      });
      
      return parser.innerHTML;
    }
    
    const content = 'text
    text
    • text

    '; console.log(replaceTextBrWithDiv(content));
    P粉336536706

    这是我在寻求(更短的)正则表达式解决方案之前的尝试:

    const dFrag = document.createDocumentFragment();
    str.textContent.split('
    ').forEach(substr => { const div = document.createElement('div'); let ul; if (!substr) { substr = '
    '; } div.innerHTML = substr; ul = div.querySelector('ul'); if (ul) { dFrag.appendChild(ul); } else { dFrag.appendChild(div); } }); str.innerHTML = ''; str.appendChild(dFrag);
    热门教程
    更多>
    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板
    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送
    PHP中文网APP
    随时随地碎片化学习

    Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号