作者Numino (神圣光芒)
看板Ajax
标题[js] split正规表示式 ie bug?
时间Sat Jul 23 09:36:41 2011
ie对字串的split处理和firefox不一样
代码如下:
<script>
var sDebug="1,2,,3,4,,,5";
alert(sDebug.split(","));
//show "1,2,,3,4,,,5" in ie7 and firefox4
alert(sDebug.split(/,/g));
//show "1,2,,3,4,,,5" in firefox4
//show "1,2,3,4,5" in ie7
</script>
用正规表示式的时候,对多个连续分隔符,ie会自动合并
这个处理显然是多余的,也可以说是错误的
因为通过不同的正规表示式 /,+/ 也可以做到自动合并
而且发现iis对split的处理存在同样问题
不知道是不是MS的js解释器的bug
--
随便看看部落格
http://blog.numino.net
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.91.213.122
※ 编辑: Numino 来自: 218.91.213.122 (07/23 09:39)
1F:推 senser:我到不觉得是个bug 因为,,,用/,/检验 是会过的 ,,也是 07/23 16:26
2F:→ senser:当然,也没错 逻辑上都可以当separator 07/23 16:27
3F:→ Numino:文中提到的例子,在ie下 /,/ 和/,+/ 就没差了 07/23 19:00
4F:→ Numino:一个case需要split(/[\n\r]/),在ie下多个\n就被合并成一个 07/23 19:03
5F:→ Numino:想了好久,没想到简单的解决办法 07/23 19:05
6F:→ Numino:而且如s大所说,"1,2,3,4,5" 用/,/检验也会过,总觉得ie处理 07/23 19:07
7F:→ Numino:欠妥 07/23 19:07
8F:推 senser:只要一个的话 要不要试试前後加个^ 和$ 像这样 /^[\n\r]$/ 07/24 06:41
9F:→ Numino:还是不行,\n\r本身也会被理解成$^,会出现奇怪的结果 07/24 09:16
10F:推 senser:那就试/[\n\r]{1}/ 吧 看看ok不ok lol 07/25 04:38
11F:→ Numino:试过,不行,还试过 /[\n\r]+?/,也不行 07/25 14:02
12F:推 senser:我刚开了ie 试一下 发现用regex真的搞不出来 然後我查了 07/25 16:06
13F:→ senser:一下 split() 发现好像没有提到他可以塞RegEx 所以我就试了 07/25 16:07
14F:→ senser:.split("\n") 好像就ok了 不知道他分割的结果是你想要的吗 07/25 16:08
15F:→ Numino:我原文里就是说','没问题了,如果"\n"可以解决就好了 07/25 17:23
16F:→ Numino:问题是\n或\r都有可能,後来把\r replace成\n,结果也很怪 07/25 17:25
17F:推 senser:你可以用regex把\r换成\n 然後再做split("\n") 这样不行? 07/28 14:10
18F:→ Numino:回楼上,试过了,结果很怪,最後是逐个判断char完成的,真辛苦 07/28 20:08