リストから特定の単語と任意の単語を検索する必要があります。これまでのところ、私はこれを持っています:
^.*?(apple)(?:\W+\w+){0,30}?\W+(ipad|itunes).*
これは、「apple」と、「ipad」または「itunes」のいずれかに一致します。
ただし、「ipad」または「itunes」が「apple」の前にある場合、これは失敗します。
誰でもアドバイスできますか?
リストから特定の単語と任意の単語を検索する必要があります。これまでのところ、私はこれを持っています:
^.*?(apple)(?:\W+\w+){0,30}?\W+(ipad|itunes).*
これは、「apple」と、「ipad」または「itunes」のいずれかに一致します。
ただし、「ipad」または「itunes」が「apple」の前にある場合、これは失敗します。
誰でもアドバイスできますか?
そのために先読みを使用することをお勧めします。
/^(?=.*?\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
シンプルなバージョン ( 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))