我正在尝试匹配字符串中的某些单词,但没有成功。
比方说,我有这个字符串:
"word , word , two words, word"
我想要做的是匹配单词,但没有开始或结束的空间。但它应该接受单词之间的空格。匹配产生的数组应为:
["word","word","two words","word"]
有人可以帮忙或给我一些见解,我将如何做到这一点?
谢谢
编辑:我尝试过并取得成功的是分两部分:
match(/[^(,)]+/g)
并使用map从结果数组中删除所有空格:
map(value => value.trim());
但是只想通过正则表达式来做,并且不知道该怎么做。
答案 0 :(得分:5)
\w[\w ]*?(?:(?=\s*,)|$)
说明:
\w[\w ]*?
匹配中间有0个或更多空格的单词字符,但从不在开头。 (懒惰)
(?:(?=\s*,)|$)
此非捕获组预先查找空格,后跟,
,或字符串结尾。
答案 1 :(得分:4)
您可以在逗号上拆分,两边都是可选空格:
var str = "word , , word , two words, word";
var arr = str.split(/(?:\s*,\s*)+/);
console.log(arr);
//=> ["word", "word", "two words", "word"]

答案 2 :(得分:3)
您可以应用以下正则表达式:
(\w+\s*\w+)
匹配
答案 3 :(得分:3)
这可能是您正在寻找的捕获组,因此迭代\ 1
\s*([\w\s]+)\s*