Javascript Regex - 以任何顺序包含列表中的单词和单词

时间:2013-10-31 09:28:22

标签: javascript regex match

我要求从列表中找到特定单词和任何单词。到目前为止,我有这个:

^.*?(apple)(?:\W+\w+){0,30}?\W+(ipad|itunes).*

这匹配“apple”和“ipad”或“itunes”。

如果“ipad”或“itunes”在“apple”之前,则会失败。

有人可以提供建议吗?

2 个答案:

答案 0 :(得分:1)

你应该更好地使用前瞻:

/^(?=.*?\bapple\b)(?=.*?\b(ipad|itunes)\b).*$/i

更新:根据OP的评论:Can you advise how my word limit would fit in here? e.g. I must find any from the list within 20 words of apple?

/^(?=.*?\bapple\b)(?=.*?\bapple(\W+\w+){0,20}\b(ipad|itunes)\b).*$/i

答案 1 :(得分:0)

简单版本不起作用(http://jsfiddle.net/xhdBQ/1/)吗?

var list = ["ipad", "itunes"];
var word = "apple";
list.push(word)

var regex = new RegExp("(" + list.join("|") + ")", "g");
console.log(regex);
console.log("blabla...apple,,safsd ssdfipadaad itunes".match(regex))