如何将这种复杂模式与正则表达式相匹配?

时间:2013-07-12 14:47:31

标签: javascript jquery regex datatables jquery-select2

我有以下数据:

记录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

以上标签应该返回两个结果,因为第一张唱片在2014年夏季旁边列出了Orangeville,而第二张唱片在2014年冬季旁边列出了Barrie。

经过一些研究和测试后,我认为我需要下面的内容,但我不能让它正常工作......我是一个正则表达式初学者。

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

感谢。

1 个答案:

答案 0 :(得分: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
}