具有变量的正则表达式构造函数不起作用,但似乎正确

时间:2018-08-31 17:23:39

标签: jquery regex

我正在尝试匹配整个单词。在我拥有印度和印第安纳波利斯的情况下,两者都是匹配的,并且如果我尝试任何分组,那么两者都不匹配,因此我无法弄清楚我在做什么错。一切似乎都正确。

因此,这是选择列表,它紧随其后触发功能。

<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函数,因此它可以查找其中的任何项目,但在这种情况下,假设我要查找的单词是两个字符串中的印度在上面发布。现在的问题是,它在两个字符串中都匹配,但是只需要在印度为国家的一个中匹配?希望这更有意义。

0 个答案:

没有答案
相关问题