我正在尝试匹配字符串中的某些单词,但没有成功。
例如,我有这个字符串:
"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*