在 js 上使用正则表达式更改除第 n 个换行符之外的每个换行符

Change every line break except nth line break with regex on js

本文关键字:换行符 js 正则表达式      更新时间:2023-09-26

我搞不通,如何将每n个换行符更改为空格。

我有这个正则表达式代码将所有换行符更改为空格:

this.value.replace(/'n/g, ' ');

它改变了所有内容,但它应该改变除第 3 个换行符之外的每个换行符,例如:

  • 第 1 行
  • 第 2 行
  • Li3
  • 李4
  • 李5
  • 李6

这些行应更改为:

    1号线
  • 2号线 Li3
  • Li4 Li5 Li6

我应该使用什么正则表达式来获得这些结果?

您可以将每一行捕获到单独的组中,并在第 1 组和第 2 组之后用space替换'n

var re = /([^'n]*)'n([^'n]*)'n([^'n]*)('n|$)/g; 
var str = 'line1'nline2'nli3'nli4'nli5'nli6';
var result = str.replace(re, '$1 $2 $3$4');

正则表达式演示

您可以使用.replace回调函数:

function replaceLineBreaks(text) {
   var index = 1;
   return text.replace(/'n/g, function(){  
      return index++ % 3 == 0 ? ''n' : ' ';  
   });
}
var replacedText = replaceLineBreaks(text);

演示:

var text = "line1'n'
  line2'n'
  line3'n'
  line4'n'
  line5'n'
  line6'n";
function replaceLineBreaks(text) {
   var index = 1;
   return text.replace(/'n/g, function() {
      return index++ % 3 == 0 ? '<br>' : ' '; //br for testing purposes
   });
}
document.body.innerHTML = replaceLineBreaks(text);