javascript split函数使用正则表达式和字符串的不同

yaot_83 2009-08-21 10:32:44
var str = "HTTP/1.0,,HTTP/1.1,,";
var strArray = str.split(",");
alert(strArray.length); // ---> 5
var strArray2 = str.split(/,/);
alert(strArray2.length); // ---> 2

如何解释? 正则表达式不保留空值吗? 为什么不保留呢
...全文
547 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
foolbirdflyfirst 2009-08-21
  • 打赏
  • 举报
回复
嗯,确实是ie/ff的差别.
关键是这个的差别.
alert(str.split(/,/));

这种情况下,ie/ff都按字符,(逗号)切分,不论是否有修正符g,都切分所有.
但是ie切分后的获得的数组自动把空值移除,而ff保留空值元素.
xinyung 2009-08-21
  • 打赏
  • 举报
回复
应该是MS的JScript实现不一样吧
s_liangchao1s 2009-08-21
  • 打赏
  • 举报
回复

刚才在as下也试了下,结果和FF一致的,那就是IE自作聪明的//掐头去尾了...所以首选split(",")
s_liangchao1s 2009-08-21
  • 打赏
  • 举报
回复

TO #3
我认为这个问题不应该这么理解..split()只是以一个字符串做为分割符 进行分割
所以/,/已经是,字符串了 与g无关..
而且测试下可以发现IE ,FF 解析结果是不一样的
<script type="text/javascript">
<!--
var str = "a,,b,,";
alert(str.split(',')); // IE: a,,b,, FF: a,,b,,
alert(str.split(/,/)); // IE: a,b FF: a,,b,,
//-->
</script>
foolbirdflyfirst 2009-08-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wtcsy 的回复:]
var strArray2 = str.split(/,/g);
加个g
[/Quote]
/,/g : 匹配多次,所以能匹配到多个,进行切分
/,/ : 匹配一次,所以匹配到第一个,切分完事
s_liangchao1s 2009-08-21
  • 打赏
  • 举报
回复

这个问题目前我的感觉,只能归结于IE和FF解析引擎不一样..没找到相关说明 只能先记住测试结果了..
wtcsy 2009-08-21
  • 打赏
  • 举报
回复
var strArray2 = str.split(/,/g);
加个g
yaot_83 2009-08-21
  • 打赏
  • 举报
回复
如果是g的问题, 我就不会发这个贴了呵呵
只能姑且认为IE就是不保留空值了呵呵
谢谢各位呵呵
dh20156 2009-08-21
  • 打赏
  • 举报
回复
这个问题与http://bbs.51js.com/viewthread.php?tid=84771&page=1有点点类似。

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧