我正在尝试匹配整个单词。在我拥有印度和印第安纳波利斯的情况下,两者都是匹配的,并且如果我尝试任何分组,那么两者都不匹配,因此我无法弄清楚我在做什么错。一切似乎都正确。
因此,这是选择列表,它紧随其后触发功能。
<option value="India">India</option>
<option value="USA">United States</option>
$(".filter").on("change",function(){
var $filter = $(this);
var $selected = $filter.val(); //get selected filter box value
var $table = $("#courses-table"); //get table
//$table.find("tr").show();
var $filterType = $filter.data("filter");//get what to filter
var $tablecell = $table.find("."+$filterType); //now look for rows that match the selected value and show them.
var $match = new RegExp( $selected );
$.each( $tablecell, function(){
if( !$match.test( $(this).text() ) )
{
$(this).closest("tr").hide();
}
});
});
$ selected是选择菜单中的变量。这会在一系列表格单元格中循环,并在像这样的两个字符串中寻找印度一词
Indianapolis, AMER, USA
和一个这样的人
Hyderabad, APAC, India
但它同时匹配两者。所以我知道我需要分组,但是当我尝试这个时
var $match = new RegExp( "(" + $selected + ")" );
它不起作用。我尝试了单词边界\ b以及输入^和$的开始和结束,但是这些都不起作用。我正在输出到控制台,字边界给了我一些奇怪的字符。显然,输入和输入的开头和结尾都不会起作用,因为India在结尾处,并且此过滤器旨在查找字符串中可能存在的任何单词。我想念什么?
编辑:我正在为国家,城市和地区使用相同的JS函数,因此它可以查找其中的任何项目,但在这种情况下,假设我要查找的单词是两个字符串中的印度在上面发布。现在的问题是,它在两个字符串中都匹配,但是只需要在印度为国家的一个中匹配?希望这更有意义。