You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求JavaScript正则:将连续<br>标签数量减一

解决连续转义<br>标签冗余问题

问题场景

现有代码会把textarea中的换行符全局替换为转义后的&lt;br&gt;标签,但用户输入时习惯按两次回车换行,导致生成的字符串出现连续多个&lt;br&gt;。需要实现:任意数量的连续&lt;br&gt;移除其中一个,例如:

  • 输入first line&lt;br&gt;&lt;br&gt;Second line → 输出first line&lt;br&gt;Second line
  • 输入first line&lt;br&gt;&lt;br&gt;&lt;br&gt;Second line → 输出first line&lt;br&gt;&lt;br&gt;Second line

修改后的代码

<textarea style="width:200px;height:200px" id="first"></textarea>
<textarea style="width:200px;height:200px;" id="second"></textarea>
<button id="submit">submit</button>

<script type="text/javascript">
    const firstTextArea = document.querySelector('#first');
    const secondTextArea = document.querySelector('#second');
    const submitBtn = document.querySelector('#submit')
    submitBtn.addEventListener('click' , function(){
        let str = firstTextArea.value.replace(/(?:\r\n|\r|\n)/g, '&lt;br&gt;');
        // 处理连续&lt;br&gt;,每组减少一个
        str = str.replace(/(&lt;br&gt;){2,}/g, (match) => match.slice(6));
        secondTextArea.value = str;
    })
</script>

逻辑说明

  1. 保留原逻辑:将所有换行符(含\r\n、\r、\n)统一替换为&lt;br&gt;
  2. 新增连续标签处理:
    • 正则/(&lt;br&gt;){2,}/g:全局匹配连续出现2次及以上的&lt;br&gt;标签组
    • 回调函数match.slice(6):每个&lt;br&gt;占6个字符,slice(6)会去掉匹配组中的第一个&lt;br&gt;,保留剩余的n-1个,正好满足需求

内容的提问来源于stack exchange,提问作者AfaqQazi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 16:50:41