使用javascript进行拆分功能:
"ff4400".split(/(?=((?:..)+$))/)
虽然我认为结果将是:
["", "ff4400", "ff", "4400", "44", "00", "00"]
但不是:
["ff", "4400", "44", "00", "00"]
你可以看到,事实上,分隔符是“4400”,“00”,但我认为它应该是“ff4400”,“4400”,“00”。 ps:捕获的元素将在数组中。
答案 0 :(得分:2)
你是正确的困惑,因为事情的结果应该只基于正则表达式。但是,String.prototype.split
引入了一些自己的怪癖:
separator的值可以是空String,空的常量 表达式,或者可以匹配空String的正则表达式。的在 在这种情况下,分隔符与空的子字符串不匹配 开始或结束输入String,也不匹配空 在前一个分隔符匹配结束时的子字符串。
此处使用的正则表达式只匹配空字符串,因此将丢弃与字符串开头对应的匹配项,并在结果中生成的元素(""
,"ff4400"
)为丢失。