正则表达式匹配没有开始和结束空格的字符串中的单词

时间:2017-12-06 07:13:17

标签: javascript regex

我正在尝试匹配字符串中的某些单词,但没有成功。

比方说,我有这个字符串:

"word , word , two words, word"

我想要做的是匹配单词,但没有开始或结束的空间。但它应该接受单词之间的空格。匹配产生的数组应为:

["word","word","two words","word"]

有人可以帮忙或给我一些见解,我将如何做到这一点?

谢谢

编辑:我尝试过并取得成功的是分两部分:

match(/[^(,)]+/g)

并使用map从结果数组中删除所有空格:

map(value => value.trim());

但是只想通过正则表达式来做,并且不知道该怎么做。

4 个答案:

答案 0 :(得分:5)

\w[\w ]*?(?:(?=\s*,)|$)

说明:

\w[\w ]*?

匹配中间有0个或更多空格的单词字符,但从不在开头。 (懒惰)

(?:(?=\s*,)|$)

此非捕获组预先查找空格,后跟,字符串结尾。

Try it here.

答案 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+)

匹配

  • 一个或多个单词字符后跟
  • 0到N个白色字符(空格字符:空格,制表符,换行符,回车符,垂直制表符)后跟
  • 一个或多个单词字符。

http://www.rexegg.com/regex-quickstart.html

答案 3 :(得分:3)

这可能是您正在寻找的捕获组,因此迭代\ 1

\s*([\w\s]+)\s*