我正在尝试做什么: 我正在使用数据表(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$)
答案 0 :(得分:2)
您可以使用非捕获组,因此您不需要在每个选项中添加开始和结束字符。试试这个:
var countries = 'sweden, united kingdom'.split(/,\s?/);
var regex = new RegExp('^(?:'+ countries.join('|') +')$');
答案 1 :(得分:0)
为什么不简单地替换逗号:
var regex = "(^"+ countryFilterUserInput.replace(/\s*,\s*/g, "$)|(^")+"$)";