使用lodash _.words时如何在短划线/连字符上分开?

时间:2015-05-15 19:26:15

标签: javascript arrays regex lodash words

我正在使用lodash来分割使用某种任意分隔符在字符串中提供给我的用户名。我想使用_.words()将字符串拆分为单词,连字符除外,因为某些用户名包含连字符。

示例:

_.words(['user1,user2,user3-adm'], RegExp)

我希望它能够产生:

['user1', 'user2', 'user3-adm']

不是这个(没有任何模式的_.words(数组)):

['user1', 'user2', 'user3', 'adm']

用于实现此目的的String / RegExp是什么?

2 个答案:

答案 0 :(得分:6)

初始案例可以通过以下方式解决:

_.words(['user1,user2,user3-adm'], /[^,]+/g);

结果:

["user1", "user2", "user3-adm"]

<强> [EDITED]

如果要添加更多分隔符,请按以下方式添加:

_.words(['user1,user2,user3-adm.user4;user5 user7'], /[^,.\s;]+/g);

结果:

["user1", "user2", "user3-adm", "user4", "user5", "user7"]

最后一个代码段将分开:

逗号(,), 点(.), 空格(\s), 分号(;

或者您也可以使用:

 _.words(['user1,user2,user3-adm.user4;user5 user7*user8'], /[-\w]+/g)

结果:

 ["user1", "user2", "user3-adm", "user4", "user5", "user7", "user8"]

在这种情况下,您可以添加不想要作为分隔符的内容。在这里,它将由不是\w(与[_a-zA-Z0-9])或-(破折号)相同的每个字符分隔

答案 1 :(得分:4)

words接受一个正则表达式来匹配单词而不要拆分它们,因此,只需使用一个匹配逗号以外的所有内容的正则表达式,即:

_.words(['user1,user2,user3-adm'], /[^,]+/g);

或者,您可以使用split

result = wordlist.split(/,/);

https://lodash.com/docs#words