2017-12-27 1349 views
1

我已经尝试过以下表达式的各种表达方式,并且已经获得了下面最成功的表达方式。基本上,我想将它插入.match()并截取所有开始句子,出现在句子中(双方空白)或结束句子的单词。例如,在这个句子中,“这个问题是一个问题”,我可能想要“这个”,“是”和“有缺陷”,而不是在“膛”或“是”中的“或” ”。我使用松散的“句子”,因为这是应用到标题,锚标签,p标签等。正则表达式Javascript:如何截取可能包围或不包含空白的整个单词

我设法只得到整个单词,但我没有得到所有的单词我我喜欢。例如,“and”会被跳过,尽管“the”被拾取,尽管两个词都位于由空白包围的句子中间。任何关于改进的想法?

var exp = /\band|\bthe|\bor|\bwhich|\bon|\babout|\bmovies|\btomatoes|\breddit|\bplayed/gi; 
+0

你能告诉我们一个具体的例子,包括哪些单词*不会*拿起来,你认为应该? – freginold

+0

我只是在尝试事先的评论。让我举个例子。 – Ryan

+3

您在开始时的解释与预期结果的示例字符串不匹配。也许,你需要'/ \ w *(?:和| | \ \ \ \ \ \ \ \ \ \ \ \ * \ gi'来匹配您拥有的替代品。查看[this ** JSFiddle **](https://jsfiddle.net/z4q3q3bh/) –

回答

2

“可能会或可能不会被包围的空白”的要求意味着你甚至不需要检查空白(这是不相关)。你所追求的是匹配包含列表中任何选项的单词。

使用

var exp = /\w*(?:and|the|or|which|on|about|movies|tomatoes|reddit|played)\w*/gi; 
 
var s = "This question is a bore,"; 
 
console.log(s.match(exp));

regex demo

这里,\w*non-capturing group比赛0+字字符的两端(ASCII字母,数字或字符_)。

相关问题