第42页 第3章 添加对各种空白的解释
但这还没有完。如果你经常翻看jQuery的实现,你就会发现jQuery1.4之后的trim实现,多出了一个对xA0的特别处理。这是Prototype.js的核心成员kangax 的发现,IE或早期的标准浏览器在字符串的处理上都有BUG,把许多本属于空白的字符没有列为\s。根据屈屈的博文 ,浏览器会把WhiteSpace 和 LineTerminator都列入空白字符。 ecma262 v5 文档规定的 WhiteSpace总共有这么多东西: Unicode 编码 说明 U+0020 SPACE,<SP> U+00A0 NO-BREAK SPACE,<NBSP> U+1680 OGHAM SPACE MARK,欧甘空格 U+180E Mongolian Vowel Separator,蒙古文元音分隔符 U+2000 EN QUAD U+2001 EM QUAD U+2002 EN SPACE,En 空格。与 en 同宽(em 的一半) U+2003 EM SPACE,Em 空格。与 em 同宽 U+2004 THREE-PER-EM SPACE,Em 三分之一空格 U+2005 FOUR-PER-EM SPACE,Em 四分之一空格 U+2006 SIX-PER-EM SPACE,Em 六分之一空格 U+2007 FIGURE SPACE,数字空格。与单一数字同宽 U+2008 PUNCTUATION SPACE,标点空格。与同字体窄标点同宽 U+2009 THIN SPACE,窄空格。em 六分之一或五分之一宽 U+200A HAIR SPACE,更窄空格。比窄空格更窄 U+200B Zero Width Space,<ZWSP>,零宽空格 U+200C Zero Width Non Joiner,<ZWNJ>,零宽不连字空格 U+200D Zero Width Joiner,<ZWJ>,零宽连字空格 U+202F NARROW NO-BREAK SPACE,窄式不换行空格 U+205F MEDIUM MATHEMATICAL SPACE,中数学空格。 用于数学方程式 U+2060 Word Joiner,同 U+200B,但该处不换行。 Unicode3.2 新增,代替 U+FEFF U+3000 IDEOGRAPHIC SPACE,表意文字空格。即全角空格 U+FEFF Byte Order Mark,<BOM>,字节次序标记字符。 不换行功能于 Unicode3.2 起废止
LineTerminator 的家族如下: Unicode 编码 说明 U+000D <CR>回车符 U+000A <LF>换行符 U+1680 <LS>行分隔符 U+180E <PS>段落分隔符
| Unicode 编码 | 说明 |
|---|---|
| U+0020 | " ", "\x20", "\u0020".半角空格符,键盘空格键 |
| U+0009 | "\t", "\x09", "\u0009", 制表符,键盘 tab 键 |
| U+000B | "\v", "\x0B", "\u000B", 垂直制表符, 可以用于判定老版本IE, !+"\v1" |
| U+000C | "\f", "\x0C", "\u000C",换页符 |
| U+000D | "\r", "\x0D", "\u000D",回车符 |
| U+000A | "\n", "\x0A", "\u000A",换行符 |
| U+0020 | SPACE,<SP> |
| U+00A0 | "\xA0", "\u00A0", 也就是著名的 No-Break Space
禁止自动换行空格符 |
| U+1680 | OGHAM SPACE MARK,欧甘空格 |
| U+180E | Mongolian Vowel Separator,蒙古文元音分隔符 |
| U+2000 | EN QUAD |
| U+2001 | EM QUAD |
| U+2002 | EN SPACE,En 空格。与 en 同宽(em 的一半) |
| U+2003 | EM SPACE,Em 空格。与 em 同宽 |
| U+2004 | THREE-PER-EM SPACE,Em 三分之一空格 |
| U+2005 | FOUR-PER-EM SPACE,Em 四分之一空格 |
| U+2006 | SIX-PER-EM SPACE,Em 六分之一空格 |
| U+2007 | FIGURE SPACE,数字空格。与单一数字同宽 |
| U+2008 | PUNCTUATION SPACE,标点空格。与同字体窄标点同宽 |
| U+2009 | THIN SPACE,窄空格。em 六分之一或五分之一宽 |
| U+200A | HAIR SPACE,更窄空格。比窄空格更窄 |
| U+200B | Zero Width Space,<ZWSP>,零宽空格 |
| U+200C | Zero Width Non Joiner,<ZWNJ>,零宽不连字空格 |
| U+200D | Zero Width Joiner,<ZWJ>,零宽连字空格 |
| U+202F | NARROW NO-BREAK SPACE,窄式不换行空格 |
| U+2028 | <LS> 行分隔符 |
| U+2029 | <PS> 段落分隔符 |
| U+205F | MEDIUM MATHEMATICAL SPACE,中数学空格。 用于数学方程式 |
| U+2060 | Word Joiner,同 U+200B,但该处不换行。 Unicode3.2 新增,代替 U+FEFF |
| U+3000 | IDEOGRAPHIC SPACE,表意文字空格。即全角空格 |
| U+FEFF | Byte Order Mark,<BOM>,字节次序标记字符。不换行功能于 Unicode3.2 起废止 |
果然还是有六分之一空格的iOS有此bug!https://github.com/fredshare/blog/issues/21