如何修改此JS代码以搜索确切的整个单词/数字

时间:2017-07-03 02:07:23

标签: javascript search

我目前正在研究搜索引擎(下面提供的砌体+同位素+自定义代码)。我希望它只显示用户输入的整个单词或数字的完全匹配,除了按div类等搜索(这一切和其他一切正常)。

现状: 当用户输入“1”时,段落包含例如“12”也显示

期望的结果: 当用户输入“1”时,仅显示包含“1”的结果 - 不包含包含221,111,12等数字的段落。

我非常感谢提供工作代码。

var qsRegex;
var buttonFilter;


var $grid = $('.grid').isotope({
  itemSelector: '.element-item',
  layoutMode: 'fitRows',
  filter: function() {
    var $this = $(this);
    var searchResult = qsRegex ? $this.text().match( qsRegex ) : true;
    var buttonResult = buttonFilter ? $this.is( buttonFilter ) : true;
    return searchResult && buttonResult;
  }
});

$('#filters').on( 'click', 'button', function() {
  buttonFilter = $( this ).attr('data-filter');
  $grid.isotope();
});


var $quicksearch = $('#quicksearch').keyup( debounce( function() {
  qsRegex = new RegExp( $quicksearch.val(), 'gi' );
  $grid.isotope();
}) );



$('.button-group').each( function( i, buttonGroup ) {
  var $buttonGroup = $( buttonGroup );
  $buttonGroup.on( 'click', 'button', function() {
    $buttonGroup.find('.is-checked').removeClass('is-checked');
    $( this ).addClass('is-checked');
  });
});



function debounce( fn, threshold ) {
  var timeout;
  return function debounced() {
    if ( timeout ) {
      clearTimeout( timeout );
    }
    function delayed() {
      fn();
      timeout = null;
    }
    setTimeout( delayed, threshold || 100 );
  };
}

2 个答案:

答案 0 :(得分:0)

听起来你只需要调整你的正则表达式,以便输入被空格包围......这是一个不错的网站,可以尝试正则表达式,虽然它是专注于ruby的,它有一个正则表达式备忘单{{3 }}

答案 1 :(得分:0)

好的,我自己弄清楚了:

 qsRegex = new RegExp( "\\b" + $quicksearch.val() + "\\b", 'gi' );