如何检测没有其他换行符的换行符?

时间:2018-07-05 18:22:44

标签: javascript regex

这里是my patter

/\r\n|\r|\n/

并且将被\n\n替换。我要做的就是用双换行符替换所有单换行符。

所以输入:

something
something else

预期结果:

something

something else

问题是,我想避免匹配其他(或更多)新行之后的换行。所以我只想选择单换行符。所以这应该没有任何匹配项:

something

something else

任何想法我该怎么做?

2 个答案:

答案 0 :(得分:1)

使用([^\r\n])\n([^\r\n])并将其替换为$1\n\n$2。这意味着

( =开始第1组

[^ =起始否定集(NOT)

\n\r =字符不匹配

] =末尾否定集

) =终端机1

\n =匹配换行符

第2组是第1组的重复。


替换为

$1 =第一组

\n\n =您的角色

$2 =第二组

答案 1 :(得分:0)

使用正则表达式([^\r\n])[\r\n](?![\r\n]+)并替换为$1\n\n。它使用捕获组来捕获换行符(不是换行符本身)之前的符号,并使用负向超前查找来确保在不捕获下一个符号的情况下,换行符不会跟随另一个换行符。

不幸的是,JS当前不完全支持负向后看(在ECMAScript 2018中已接受),否则可以使用(?<![\r\n])[\r\n](?![\r\n]) –根本没有捕获组,因此替换字符串只能是{{ 1}}。