如何使用JavaScript正则将连续重复换行符替换为少一次的数量
解决方案
完全可以通过正则实现,不需要额外捕获重复次数,调整正则匹配规则即可:
通用方案(兼容所有支持正则分组替换的环境)
你只需要给原有匹配规则增加分组,将连续换行中除第一个以外的部分捕获为分组,替换时直接保留分组内容即可:
- 匹配正则:
/\n(\n+)/g - 替换内容:
$1(Python等部分语言写为\1)
示例代码
JavaScript环境:
const originStr = "hello\n\n\ngoodbye"; const result = originStr.replace(/\n(\n+)/g, '$1'); // 输出结果:hello\n\ngoodbye
Python环境:
import re origin_str = "hello\n\n\ngoodbye" result = re.sub(r"\n(\n+)", r"\1", origin_str)
兼容Windows换行的方案
如果你的字符串存在Windows格式的换行符\r\n,调整正则即可同时兼容两种换行格式:
- 匹配正则:
/(\r?\n)(\r?\n+)/g - 替换内容:
$2(Python等部分语言写为\2)
实现原理
匹配规则会找到所有连续2次及以上的换行序列,自动剔除序列的第一个换行,保留剩下的k-1个换行(k为原连续换行次数),刚好符合你要求的连续重复次数减1的效果。
内容的提问来源于stack exchange,提问作者Arnau
相关产品推荐
相关产品推荐

