字符串替换某些匹配组,而不是整个匹配

时间:2019-05-07 18:02:04

标签: javascript regex string replace

在js中,我想用一些文本替换字符串中的换行符,但仅当\ n前面有一个点和可选的空格时才可以。示例文字:

  

第一句话来了
  分成两行。

     

这将是一个新句子。

     

最后

应该成为

"First sentence comes split in two lines.<br>This would be a new sentence.<br>And the end"

使用正则表达式:

text = text.replace(/\.\s(*\n)/g, "<br>");

替换整个比赛,因此吃了点,据我所知,RegEx.repace无法提供仅替换匹配组的方法。

最简单的方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以在一个组中捕获一个文字点,然后捕获一个换行符,后跟0+个空格字符。

在替换使用组1中,然后休息:$1<br>

\s*(\.)?\n\s*

Regex demo

const regex = /\s*(\.)?\n\s*/gm;
const str = `First sentence comes   
split in two lines.

This would be a new sentence.

And the end`;
const subst = `$1<br>`;
const result = str.replace(regex, subst);

console.log(result);

如果您也要删除第一个<br>,则还可以选择分两个步骤进行操作:

const str = `First sentence comes   
split in two lines.

This would be a new sentence.

And the end`;
const result = str.replace(/\s*(\.)\s*/g, "$1<br>").replace(/\s*\n+\s*/g, " ");
console.log(result);