正则表达式应用split问题

var color='red,blue,green';
color.split(/[^\,]+/);返回["", ",", ",", ""]

为什么?(这道题没有错,可以去控制台测试下,我想知道这个结果是怎么得来的)

阅读 3.8k
5 个回答
(/[^\,]+/)

匹配非 , 字符

因此

color.split(/[^\,]+/)

是以 redbluegreen 这三个字符串为分割符的

分割的结果显然是剩下的两个空串中间夹两个逗号。

['', ',', ',', '']

正则 '/[\^,]+/' 匹配出 'red' 'blue' 'green'.
有若干个占位符, 相当于color为'$,$,$'字符串.

// 好比调用如下方法
color.split('$');  // return ['',',', ',', '']

两个''空字符串.
存在的原因是split函数分隔的时候会将分隔符分隔成左右两部分.
如果左边没有字符就返回空字符

split接收的参数是分隔符。所以应该是 color.split(',');

这样写color.split(',');

首先你得清楚 正则的意思
你这段(/[^\,]+/的意思是匹配非 , 字符
然后color.split(/[^\,]+/) 是以三个字符串分隔的 最后匹配剩下的自然就是:

['', ',', ',', '']
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题