为什么第一个null不会通过split函数得到?

时间:2014-04-09 11:33:19

标签: javascript regex

使用javascript进行拆分功能:

"ff4400".split(/(?=((?:..)+$))/)

虽然我认为结果将是:

["", "ff4400", "ff", "4400", "44", "00", "00"]

但不是:

["ff", "4400", "44", "00", "00"]

你可以看到,事实上,分隔符是“4400”,“00”,但我认为它应该是“ff4400”,“4400”,“00”。 ps:捕获的元素将在数组中。

1 个答案:

答案 0 :(得分:2)

你是正确的困惑,因为事情的结果应该只基于正则表达式。但是,String.prototype.split引入了一些自己的怪癖:

  

separator的值可以是空String,空的常量   表达式,或者可以匹配空String的正则表达式。的在   在这种情况下,分隔符与空的子字符串不匹配   开始或结束输入String,也不匹配空   在前一个分隔符匹配结束时的子字符串。

此处使用的正则表达式只匹配空字符串,因此将丢弃与字符串开头对应的匹配项,并在结果中生成的元素("""ff4400")为丢失。