js split切割的问题,

var str = '张三,李四,王五,赵六';

请问下 , split里的正则怎么写, 才能使结果为['张三,','李四,','王五,','赵六']
也就是名字后面有逗号的, 切出来的数组的每一项要带着这个逗号。

我现在的方法是切出来之后, 再操作数组,给除最后一项的每一项加逗号。 有没有用正则可以直接搞出来的方法!

阅读 3.9k
4 个回答
'张三,李四,王五,赵六'.split(/(?<=,)/)

不能。

正则不是万能的,它只能做匹配、并由此延申出替换、分割、查找,除此之外的都不能做。

你这个想要强行用正则的话只能做两次,一次替换一次分割:

'张三,李四,王五,赵六'.replace(/,/g, ',|').split(/[|]/g);

效率和可读性还不如你 map 呢。


补充:忘了还有非捕获元的用法 =.=,下面 @Bestime 的回答是对的。但非捕获元都是贪婪的,效率比较差。如果不是确定长度的输入尽量慎用贪婪匹配。

'张三,李四,王五,赵六'.split(/(?<=,)\s*/g)
这个只有ES6才支持

'张三,李四,王五,赵六'.split(/[,,]/)

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