2017-12-27 1350 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字母,數字或字符_)。

相關問題