我正在使用lodash来分割使用某种任意分隔符在字符串中提供给我的用户名。我想使用_.words()将字符串拆分为单词,连字符除外,因为某些用户名包含连字符。
示例:
_.words(['user1,user2,user3-adm'], RegExp)
我希望它能够产生:
['user1', 'user2', 'user3-adm']
不是这个(没有任何模式的_.words(数组)):
['user1', 'user2', 'user3', 'adm']
用于实现此目的的String / RegExp是什么?
答案 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(/,/);