2017-07-03 62 views
0

我目前正在研究搜索引擎(砌体+同位素+自定义代码如下)。我希望它只显示用户输入的整个单词或数字的精确匹配,除了通过divs类的搜索等(这个和其他一切工作正常)。如何修改此JS代码来搜索确切的整个单词/编号

当前状态: 当用户输入“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); 
    }; 
} 

回答

0

听起来像是你只需要tweek您正则表达式,使得输入由空间包围......这是一个体面的网站尝试在正则表达式,虽然这是红宝石的重点,它有一个正则表达式作弊片http://rubular.com/

0

OK,我想通了自己:

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