为什么string.split()对正则表达式的行为有所不同?

时间:2010-06-19 16:56:31

标签: javascript regex split

在JavaScript中,如果我运行以下代码:

<script type="text/javascript">
var nameStr = 'Chris Kate Steve';
var names = nameStr.split(/[ ]/);
var names2 = nameStr.split(' ');

for (var i in names)
{
    alert(i);
}

for (var i in names2)
{
    alert(i);
}
</script>

会发出警告:

  

0

     

1

     

2

     

索引

     

输入

第一组和:

  

0

     

1

     

2

第二组。

知道为什么会这样吗?

2 个答案:

答案 0 :(得分:4)

for...in迭代对象的属性 - 将它与数组一起使用是不可靠的,应该避免。使用for(var i=0; i < names.length; i++),您的问题就会得到解决。

只是split使用regexp将结果返回给结果。

答案 1 :(得分:1)

带有字符串作为输入的

split方法返回一个子字符串数组。因此返回的Array对象只是将其元素作为其内容。

带有正则表达式作为输入的

split方法返回一个Array对象,该对象在其数字索引位置具有子字符串,输入字符串和第一个匹配的索引存储在它们各自的属性中(就像返回一样)值string.match() / regex.exec()函数) - 因此inputindex属性。