2013-07-12 32 views
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 

上面的標籤應返回兩個結果,因爲第一條記錄已經奧蘭治旁邊列出2014年夏季和第二記錄已巴里旁邊列出2014年冬季

經過一番研究和測試我認爲我需要遵循以下幾點,但我無法完全正確地工作......我是一位正則表達式初學者。

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

謝謝。

回答

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 
} 
+0

謝謝,我將對此進行測試和報告背部。 – tsdexter