2

例如,我有一个 sourceString : 1234\n\n\n\n5678

并且,我想替换必须等于或大于 2 个字符的序列中的前 2个\n\n

所以,我期望的结果是: 1234TEST\n\n5678

我试过 : (^|[^\n])\n{2}

实际结果是:123TEST\n\n5678

http://regex101.com/r/cS6uG3

我的代码有什么问题?

基本思想来自@Tim Pietzcker 关于我上一个问题的教程。

谢谢。

正则表达式匹配单个新行。正则表达式匹配双新行

4

2 回答 2

1

这种基于正则前瞻的正则表达式应该可以工作:

var repl = "1234\n\n\n\n5678".replace(/\n{2}(?=\n{2,})/, "TEST");

/\n(?=\n{2,})/\n\n表示如果紧随其后有 2 个或更多则匹配\n

于 2013-08-02T14:08:27.707 回答
0

这里发生的是:

(^|[^\n])\n{2}
^-------^ -- this part

匹配4并被替换。您需要在替换中再次包含它。

var string = "1234\n\n\n\n5678";
string.replace(/(^|[^\n])\n{2}/g, "$1TEST");
                                   ^^-- back-reference
于 2013-08-02T14:07:58.460 回答