REGEX匹配没有开始和结束空间的字符串的单词



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

例如,我有这个字符串:

"word , word , two words, word"

我要做的是匹配单词,但没有开始或结束的空间。但是它应该接受单词之间的空间。比赛产生的阵列应为:

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

有人可以帮助或给我一些有关我该怎么做的见解?

谢谢

编辑:我尝试和成功的是分两个部分:

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

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

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

,但只想通过正则表达来做到这一点,也不知道该怎么做。

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

说明:

w[w ]*?

将单词字符匹配,中间有0个或多个空间,但从未在开始时。(懒惰)

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

这个非捕获组向前探望空间,然后是,字符串的末端。

在这里尝试。

您可以在两侧的可选空间包围的逗号上分开:

var str = "word , , word , two words, word";
var arr = str.split(/(?:s*,s*)+/);
console.log(arr);
//=> ["word", "word", "two words", "word"]

您可以应用以下正格:

(w+s*w+)

匹配

  • 1个或多个单词字符,然后是
  • 0至n个白色字符(空格字符:空间,标签,纽文,返回马车返回,垂直选项卡),然后是
  • 1个或多个字符。

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

这可能是您正在寻找的捕获组,因此遍及 1

s*([ws]+)s*

最新更新