0

次のようなデータがあります。

レコード 1:

Winter 2014 - Barrie, Muskoka
<br style="display: block;">
Summer 2014 - Orangeville, Owen Sound
<br style="display: block;">
Fall 2013 - Barrie

レコード 2:

Winter 2014 - Barrie
<br style="display: block;">
Fall 2013 - Barrie

タグを介して AND および OR でフィルタリングする必要があります。キャンパス フィルターと用語フィルターがあります。各フィルターでは、複数のキャンパスまたは複数の用語を選択でき、それに応じてフィルタリングする必要があります。

例えば:

Campus: Orangeville,Barrie
Term: Summer 2014,Winter 2014

最初のレコードでは Orangeville が Summer 2014 の隣にリストされ、2 番目のレコードでは Barrie が Winter 2014 の隣にリストされているため、上記のタグは両方の結果を返す必要があります。

いくつかの調査とテストの後、以下のようなものが必要だと思いますが、正しく動作させることができません...私は少し正規表現の初心者です。

(?=Winter\ 2014\ \-\ (Barrie|Orangeville))(?=Summer\ 2014\ \-\ (Barrie|Orangeville))

ありがとう。

4

1 に答える 1

1

私があなたを正しく理解していれば、次のように一致させることができます:

var campuses = ["Barrie", "Orangeville"];
var terms = ["Winter 2014", "Summer 2014"];

var your_regex = new RegExp("(" + terms.join("|") + ")\\s-\\s(" + campuses.join("|") + ")");

次に、レコードが一致するかどうかをテストします。

if (your_regex.test(your_record)) {
  // Record matches
}
于 2013-07-12T15:03:30.080 に答える