)首先,对不起,我糟糕的英语:p正在查看下一个js代码片段:
var classes = element.className.split(/\s+/);该代码将将和元素的完整类名拆分为包含每个类的数组.但是,使用.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
他们有什么区别吗?
发布于 2015-01-24 17:08:50
.split(“")和.split(/\s+/)之间的区别是:
正则表达式" "
正则表达式/\s+/
短:
" "将数组拆分为一个空格字符。
/\s/在每种空格字符上拆分数组
一次与非限定时间间的+匹配
发布于 2015-01-24 16:47:38
不,.split(/\s+/)和.split(" ")是不同的。\s+匹配一个或多个空格字符,其中包括" "匹配单个水平空格字符的换行符。因此,.split(/\s+/)根据一个或多个空格字符拆分输入,.split(" ")根据单个空格拆分输入。
示例:
> "foo bar".split(/\s+/)
[ 'foo', 'bar' ]
> "foo bar".split(" ")
[ 'foo', '', '', 'bar' ]发布于 2015-01-24 16:51:11
\s捕获的空格类型多于空格。
匹配单个空白字符,包括空格、选项卡、表单提要、行提要。相当于[ \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"]https://stackoverflow.com/questions/28127794
复制相似问题