2013-03-12 146 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

相关问题