2013-03-12 129 views
0

我想要做的事: 我用數據表(http://www.datatables.net/),一個真棒jQuery插件HTML表格。還有一個搜索字段,我可以使用正則表達式來篩選選項列表,並且效果很好。這個搜索:(^ sweden $)|(^ united kingdom $)過濾列表,只顯示連接到這兩個國家的記錄。但我不認爲用戶應該知道正則表達式,所以我試圖讓用戶輸入瑞典,英國,並在關鍵將它轉換爲隱藏領域內的正則表達式搜索:) 我已經mandered從|中獲取列表它可以消除任何偶然的雙逗號(,,)或多個空格,但是我對於如何捕捉每個國家並在輸出中添加(^ $)有點困惑。正則表達式轉換的國家名單爲正則表達式搜索

CODE:

var countryFilterUserInput = $("#colCountry_filterUser").val(); 
var countryFilterUserInput = countryFilterUserInput.replace(/[, ]* *,+ *([^((,|)+$)])/g,"|$1").replace(/[, ]*$/,''); 
console.log(countryFilterUserInput); 


輸入:sweden, united kingdom

給我sweden|united kingdom

我試圖使它:(^sweden$)|(^united kingdom$)

回答

0

爲什麼不能簡單地替代逗號:

var regex = "(^"+ countryFilterUserInput.replace(/\s*,\s*/g, "$)|(^")+"$)"; 
2

您可以使用非捕獲組,因此您無需在每個選項中添加開始和結束字符。試試這個:

var countries = 'sweden, united kingdom'.split(/,\s?/); 
var regex = new RegExp('^(?:'+ countries.join('|') +')$'); 
+0

我都嘗試了,我無法從這個得到的結果觸發正確的搜索。 (當然,我用textfield^__ ^的輸入替換了文本字符串) – Alisso 2013-03-12 07:46:46