\r和\n的区别

41

\r\n在正则表达式中有什么区别?

能否用例子解释一下?

5个回答

70

\r代表回车(CR,ASCII字符13),\n代表换行(LF,ASCII字符10)。在早期的打印机中,每一行末尾都有两个ASCII字符来告诉打印机如何操作 - CR会让打印机回到纸张的左边缘,LF会移到下一行。

操作系统仍然具有不同的行尾约定 - 有些使用\n\r,有些使用\n,有些使用\r\n

在JavaScript中,您主要处理\n - 这是字符串通常切换到下一行的方式。但是,根据您正在处理的字符串,您可能也会遇到\r


4
我不知道有任何平台或协议将\n\r指定为换行符号;在OS X之前的MAC OS上,本机行分隔符仅为\r - Alan Moore
@Alan 如果你想让我们告诉你,只需要问一下就好了。 :) - bzlm
@bzim:你的意思是你知道一个使用 \n\r (LFCR, 0x0A 0x0D) 作为行分隔符的系统吗?说来听听! - Alan Moore
此答案已添加到Stack Overflow正则表达式FAQ,位于“转义序列”下。 - aliteralmind
你会在什么情况下使用其中一个而不是另一个? - Hyfy

26
通常情况下,\r代表回车字符(ASCII 0x0d),而\n是换行符(ASCII 0x0a)。此页面列出了所有特殊字符的列表,为了完整起见,在此进行引用:

  • \f 匹配换页符。
  • \r 匹配回车符。
  • \n 匹配换行符。
  • \t 匹配水平制表符。
  • \v 匹配垂直制表符。
  • \0 匹配 NUL 字符。
  • [\b] 匹配退格符。
  • \s 匹配空白字符(等同于 [\f\n\r\t\v\u00A0\u2028\u2029])。
  • \S 匹配任何非空白字符(等同于 [^\f\n\r\t\v\u00A0\u2028\u2029])。
  • \w 匹配任何字母数字字符(包括下划线,等同于 [a-zA-Z0-9_])。
  • \W 匹配任何非字母数字字符(等同于 [^a-zA-Z0-9_])。
  • \d 匹配任何数字(等同于 [0-9])。
  • \D 匹配任何非数字(等同于 [^0-9])。
  • \b 匹配单词边界(单词和空格之间的位置)。
  • \B 匹配非单词边界(等同于 [^\b])。
  • \cX 匹配控制字符。例如:\cm 匹配 control-M
  • \xhh 匹配两个十六进制代码为 hh 的字符。
  • \uhhhh 匹配四个十六进制代码为 hhhh 的 Unicode 字符。

3
想象一下旧式打字机......回车会把当前的“位置”移回到行的开头。 - StuartLC
2
@Avinash,@nonnb是正确的 - 回车和换行是来自纸质终端时代的术语;回车字符将打印头移回列零,而换行则使纸张向前滚动一行。 - Carl Norum
\0 不属于那里。\{number} 只是一个八进制转义序列。 - Eli Grey

9

\n代表换行。

\r代表回车。

例如,在Windows中,换行符是\r\n。在绝大多数其他操作系统中,它们是\n


1
并不完全正确。例如,OS 9 就有 \r\n,如果我没记错的话。 - EboMike
3
据我所知,曾经有一个 Mac OS 只使用 \r,这是很久以前的事情了。 - Andrzej Doyle

7

\r\n是数字表示法,用于在打字机上跳到下一行。 \r回车符\n换行符(也称为换行)。 在打字机上,要到达新行的开头,您需要将车返回到最左边的位置,然后将纸张向上送一行。

Unix使用\n表示新行,OS9之前的Mac使用\r,而Windows使用\r\n


3

\n --> 表示换行

\r --> 表示回车


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接