var s = '\u0020\u00A0\u1680\u180E\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u200B\u200C\u200D\u202F\u205F\u2060\u3000\uFEFF'
for (var i = 0; i < s.length; i += 1) {
if (s[i].trim().length > 0) {
console.log('\\u' + s.charCodeAt(i).toString(16))
}
}
Unicode定义的空格符号如下:
[\u0020\u00A0\u1680\u180E\u2002-\u200D\u202F\u205F\u2060\u3000\uFEFF]
以下几种空格可以重点留意:
其中\u2060为Unicode 3.2新增。
在移除字符串首尾空白时,我们看看TJ的trim:
别看这个库如此简单,但是每天的下载量达到1W+。先不说其它方面的BUG,就正则来说问题就不少。
\s
匹配一个空白字符,等价于:[\f\n\r\t\v\u00A0\u0020\u1680\u180E\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]
可以看出很多第三方库在移除首尾空白时都没有考虑周全。 下面我们看看浏览器内置的trim又是怎样的?
示例代码:
输出结果如下:
结论很明朗:浏览器内置的trim也并非100%准确,所以我推荐在严格场景下面使用自定义的trim函数。
查看在线示例
参考链接