3 javascript regex node.js ecmascript-6
就匹配字符串中的换行符而言 -与?/[\r\n]/相同/[\n]/
我正在阅读这篇博文: https ://davidwalsh.name/remove-multiple-new-lines
它说使用/[\r\n]/,但我只是想知道它是否总是与 相同/[\n]/,或者它们是否是一种维恩图,其中每个可能匹配不同的东西。
不,它们不是同一件事。\r匹配回车符 (CR),同时\n匹配换行符 (LF)。在某些环境中,新行通常由\r\n(如Windows)指定,而在其他环境中,新行仅由(如Unix)指定\n。他们是不同的角色。
这是一个例子:
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 replacementRun Code Online (Sandbox Code Playgroud)
正如您所看到的,您不能只使用[\n]而不是[\r\n]- 输出是不同的,它们将匹配字符串的不同部分。
通常,当您想要匹配未知格式的通用换行符时,可以使用
\r?\n
Run Code Online (Sandbox Code Playgroud)
匹配回车符(如果存在),然后是换行符。
正如评论所指出的,确实旧的Mac\r仅使用过,因此为了匹配这些,您可以先查找\ror\n然后匹配:
(?=\r|\n)\r?\n?
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6256 次 |
| 最近记录: |