我尝试了以下表达的各种表述,并且在下面的表达中取得了最大的成功。基本上,我想把它插入.match()并阻止所有开始一个句子,出现在一个句子(两边的空白)或结束一个句子的单词。例如,在句子中,“这个问题是一个膛”,我可能想要“这个”“是”和“钻孔”,而不是“钻孔”或“是”中间的“或” ”。我正在松散地使用“句子”,因为它被应用于标题,锚标签,p标签等。
我设法只得到了整个单词,但我没有得到我想要的所有单词。例如,“and”被跳过虽然“the”被拾取,尽管两者都在被空格包围的句子中间。关于改进的任何想法?
var exp = /\band|\bthe|\bor|\bwhich|\bon|\babout|\bmovies|\btomatoes|\breddit|\bplayed/gi;
答案 0 :(得分: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
此处,non-capturing group两端的\w*
匹配0+字符(ASCII字母,数字或_
字符)。