例如,我有一个 sourceString :
1234\n\n\n\n5678
并且,我想替换必须等于或大于 2 个字符的序列中的前 2个\n
\n
所以,我期望的结果是:
1234TEST\n\n5678
我试过 :
(^|[^\n])\n{2}
实际结果是:123TEST\n\n5678
我的代码有什么问题?
基本思想来自@Tim Pietzcker 关于我上一个问题的教程。
谢谢。
例如,我有一个 sourceString :
1234\n\n\n\n5678
并且,我想替换必须等于或大于 2 个字符的序列中的前 2个\n
\n
所以,我期望的结果是:
1234TEST\n\n5678
我试过 :
(^|[^\n])\n{2}
实际结果是:123TEST\n\n5678
我的代码有什么问题?
基本思想来自@Tim Pietzcker 关于我上一个问题的教程。
谢谢。
这种基于正则前瞻的正则表达式应该可以工作:
var repl = "1234\n\n\n\n5678".replace(/\n{2}(?=\n{2,})/, "TEST");
/\n(?=\n{2,})/
\n\n
表示如果紧随其后有 2 个或更多则匹配\n
这里发生的是:
(^|[^\n])\n{2}
^-------^ -- this part
匹配4
并被替换。您需要在替换中再次包含它。
var string = "1234\n\n\n\n5678";
string.replace(/(^|[^\n])\n{2}/g, "$1TEST");
^^-- back-reference