【问题标题】:Replace all break lines present in <pre> tag with <br> tag in javascript将 <pre> 标记中存在的所有换行符替换为 javascript 中的 <br> 标记
【发布时间】:2026-02-02 06:05:01
【问题描述】:

我有一个这样的html字符串

<div>
    <p>
        All set to go in.
        Finally in.
    </p>
    <pre>
        Yup this text is present 
        inside of the pre tag.
    </pre>
</div>

我想用 br> 标签替换 pre 标签内的换行符。

最终结果应该是。

<div>
    <p>
        All set to go in.
        Finally in.
    </p>
    <pre>Yup this text is present<br> inside of the pre tag.</pre>
</div>

到目前为止我尝试了什么? 我尝试使用正则表达式并创建了如下所示的模式:- /is(?=.*&lt;\/pre&gt;)/g 只能找到 &lt;/pre&gt; 标记之前的“是”。我还想在其中包含另一个条件,即它应该在&lt;pre&gt; 标记之后。在https://regex101.com/r/qW7tZ1/5 试试这个正则表达式

How do I replace all line breaks in a string with <br /> tags? 不符合我的条件,因为我不想替换所有出现的换行符。

【问题讨论】:

  • 您是在浏览器中还是在节点中执行此操作?
  • 我在 react-native 工作。
  • &lt;pre&gt; 块的内容是一个字符串,那么为什么链接的问题不能提供解决方案?
  • @Andreas 链接问题替换字符串中存在的所有断行。但我只想替换那些存在于
     标签

标签: javascript html regex react-native


【解决方案1】:

这是一个简单的解决方案

export default (html: string): string => {
  if (html.indexOf('<pre>') === -1) return html;
  const array = html.split('<pre>');
  let finalContent = '';
  for (let i = 0; i < array.length; i++) {
    if (i === 0) {
      finalContent = `${array[0]}<pre>`;
    } else {
      const secondArray = array[i].split('</pre>');
      finalContent = `${finalContent}${secondArray[0]
        .replace(/\r\n/g, '<br />')
        .replace(/[\r\n]/g, '<br />')}</pre>${secondArray[1]}`;
      if (i !== array.length - 1) finalContent = `${finalContent}<pre>`;
    }
  }
  return finalContent;
};

【讨论】:

    【解决方案2】:

    不要使用正则表达式来解析/操作 html,使用简单的 DOM 函数

    let html = `<div>
    <p>
    All set to go in.
    Finally in.
    </p>
    <pre>
    Yup this text is present 
    inside of the pre tag.
    </pre>
    </div>`;
    
    function newlineToBr(str) {
      let div = document.createElement('div');
      div.innerHTML = str;
      Array.from(div.getElementsByTagName('pre')).forEach(pre => {
        pre.innerHTML = pre.innerHTML.replace(/\n/g, "<br />");
      });
      return div.innerHTML;
    }
    console.log(newlineToBr(html));

    【讨论】:

    • 我想在 react-native 中做这个操作,你能创建一个接受字符串并返回修改后的字符串的方法吗?
    • 当然@VishweshJainkuniya。用function为你包围代码
    • 找不到文档。我必须在移动应用程序中运行它。 *.com/questions/43511168/…