在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无法提供仅替换匹配组的方法。
最简单的方法是什么?
答案 0 :(得分:1)
您可以在一个组中捕获一个文字点,然后捕获一个换行符,后跟0+个空格字符。
在替换使用组1中,然后休息:$1<br>
\s*(\.)?\n\s*
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);