"aaabbbcccdeefff".split(/(\w)\1+/)
这句代码的输出结果为:
["", "a", "", "b", "", "c", "d", "e", "", "f", ""]
但是:
"aaabbbcccdeefff".replace(/(\w)\1+/g,"")
输出结果为:
"d"
所以按照我的理解,拆分结果应该为:
[d]
那里出问题了呢?
"aaabbbcccdeefff".split(/(\w)\1+/)
这句代码的输出结果为:
["", "a", "", "b", "", "c", "d", "e", "", "f", ""]
但是:
"aaabbbcccdeefff".replace(/(\w)\1+/g,"")
输出结果为:
"d"
所以按照我的理解,拆分结果应该为:
[d]
那里出问题了呢?
10 回答11.7k 阅读
2 回答3.2k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
3 回答877 阅读✓ 已解决
3 回答1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
作为 split 参数的正则表达式如果包换捕捉, 则捕捉的结果会被拼在结果数组中.
所以结果中会出现 a,b,c,e,f. 因为他们是
(\w)
捕捉的结果,""
则是由于每次迭代时分割符出现在开始或结尾则会产生一个""
字符.如果想达到预期的效果输出
[d]
, 可以这样做: