正则表达式将国家列表转换为正则表达式搜索

时间:2013-03-12 07:32:46

标签: javascript regex

我正在尝试做什么: 我正在使用数据表(http://www.datatables.net/),这是一个用于html表的精彩jQuery插件。还有一个搜索字段,我可以使用regexp来过滤选项列表,它很有用。此搜索:(^ sweden $)|(^ united kingdom $)过滤列表,仅显示连接到两个国家/地区的记录。但我不认为用户应该知道正则表达式,所以我试图让用户输入瑞典,联合王国,并在密钥上将其转换为隐藏字段内的正则表达式搜索:) 我已经负责将列表从|到它删除了任何偶然的双逗号(,,)或多个空格,但我对如何捕获每个国家并在输出中添加(^ $)有点卡住。

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$)

2 个答案:

答案 0 :(得分:2)

您可以使用非捕获组,因此您不需要在每个选项中添加开始和结束字符。试试这个:

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

答案 1 :(得分:0)

为什么不简单地替换逗号:

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