:)首先,对不起我的英语:p 我正在看下一个js代码片段:
var classes = element.className.split(/\s+/);
该代码会将and class的完整类名拆分为包含每个类的数组......但是,使用.split(/\s+/)
和使用.split(" ")
之间有什么区别?我看到了同样的结果......
我使用Chrome中的下一个简单代码对此进行了测试:
<!DOCTYPE html>
<html>
<body>
<div id="cono" class="clase1 clase2 clase3-xD">
</div>
<script>
var d = document.getElementById("cono");
console.log(d.className);
var classes = d.className.split(" ");
for (i in classes) {
console.log(classes[i]);
}
</script>
</body>
</html>
无论我使用.split(" ")
还是.split(/\s+/)
:
clase1 clase2 clase3-xD
clase1
clase2
clase3-XD
他们有任何相关的区别吗?
答案 0 :(得分:9)
不,.split(/\s+/)
和.split(" ")
是不同的。 \s+
匹配一个或多个空格字符,包括" "
与单个水平空格字符匹配的换行符。因此.split(/\s+/)
根据一个或多个空格字符拆分输入,.split(" ")
根据单个空格拆分输入。
示例:
> "foo bar".split(/\s+/)
[ 'foo', 'bar' ]
> "foo bar".split(" ")
[ 'foo', '', '', 'bar' ]
答案 1 :(得分:8)
.split(“”)和.split(/ \ s + /)之间的区别是:
正则表达式" "
正则表达式/\s+/
短:
" "
将数组拆分为一个空格字符
/\s/
将数组拆分为各种空白字符
+
在一个和无限制的时间之间匹配
答案 2 :(得分:1)
\s
捕获比空格更多类型的空白
来自https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions:
匹配单个空格字符,包括空格,制表符,换页符和换行符。相当于[ \f\n\r\t\v\u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000]
。
此外+
表示它将匹配多个空格。因此foo bar
会产生不同的结果:
js> 'foo bar'.split(' ')
["foo", "", "", "", "", "", "bar"]
js> 'foo bar'.split(/\s+/)
["foo", "bar"]