至于匹配字符串中的换行符-是否/[\r\n]/
相同/[\n]/
?
我正在阅读此博客文章:https : //davidwalsh.name/remove-multiple-new-lines
它说使用/[\r\n]/
,但是我只是想知道它是否始终与匹配/[\n]/
,或者它们是否是维恩图,其中每个都可能匹配不同的东西。
不,他们不是一回事。\r
与回车符(CR)\n
匹配,而与换行符(LF)匹配。在某些环境中,换行通常由\r\n
(例如Windows)指定,而在其他环境中,换行仅由\n
(Unix)指定。它们是单独的字符。
这是一个例子:
const file = 'line\r\nline2';
const file2 = 'line\nline2';
console.log(file.replace(/[\n]/g, '\nNEW LINE:\n')); // one replacement
console.log(file2.replace(/[\n]/g, '\nNEW LINE:\n')); // one replacement
console.log(file.replace(/[\r\n]/g, '\nNEW LINE:\n')); // two replacements
console.log(file2.replace(/[\r\n]/g, '\nNEW LINE:\n')); // one replacement
如您所见,您不能只使用[\n]
而不是[\r\n]
-输出是不同的,它们将匹配字符串的不同部分。
通常,当您想以未知格式匹配通用换行时,可以使用
\r?\n
匹配回车符(如果存在),然后换行。
正如评论所指出的,确实是旧的Mac\r
仅使用了,所以也要匹配它们,您可以提前寻找\r
或\n
然后匹配:
(?=\r|\n)\r?\n?
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句