0

我正在尝试做的事情: 我正在使用数据表(http://www.datatables.net/),这是一个用于 html 表的很棒的 jQuery 插件。还有一个搜索字段,我可以在其中使用 regexp 过滤选项列表,效果很好。此搜索: (^sweden$)|(^united Kingdom$) 过滤列表,仅显示与这两个国家相关的记录。但我不认为用户应该知道正则表达式,所以我试图允许用户输入瑞典、英国,并在键上将其转换为隐藏字段内的正则表达式搜索:) 我已经授权从 , 到 | 获取列表 并且它会删除任何意外的双逗号 (,,) 或多个空格,但我对如何捕获每个国家/地区并在输出中添加 (^$) 感到有点困惑。

代码:

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


输入:sweden, united kingdom

给我sweden|united kingdom

我正在努力做到:(^sweden$)|(^united kingdom$)

4

2 回答 2

2

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

var countries = 'sweden, united kingdom'.split(/,\s?/);
var regex = new RegExp('^(?:'+ countries.join('|') +')$');
于 2013-03-12T07:37:04.400 回答
0

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

var regex = "(^"+ countryFilterUserInput.replace(/\s*,\s*/g, "$)|(^")+"$)";
于 2013-03-12T07:37:12.263 回答