2013-11-26 3 views
1

У меня есть код для поиска нескольких слов в jquery. но у меня проблема с поиском слова «мужчина и женщина». когда я вводил слово «мужчина», результат отображения был женским и мужским, потому что слово «женщина» содержит символы «Fe» + «male», как я могу исправить эту проблему. Когда я набрал самец, он должен отображать только самец. и женское слово будет отображаться только тогда, когда я напечатал «Мужской Женский» или «Женский»поиск в таблице с несколькими словами

if (!RegExp.escape) { 
RegExp.escape = function (s) { 
    return s.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&") 
}; 
} 
jQuery(function ($) { 
///search this table 
$(' #search ').click(function() { 
    var searchthis = new RegExp($(' #emp_search ').val().replace(/ /g,"|"), 'i'); 
    $("table").find("tr").slice(1).each(function (index) { 
     // var text = $(this).find("td").text().toLowerCase().trim(); 
     var text = $.trim($(this).text()); 
     $(this).toggle(searchthis.test(text)); 
    }); 
}); 
}); 

вот мой демо http://jsfiddle.net/wind_chime18/ANLgD/10/

+1

Не могли бы вы пояснить, предоставив кучу примеров с использованием AND и OR, например: «строка должна содержать: john OR male OR female»? Это поможет вам точно определить, что вы хотите. Пожалуйста, обновите свой вопрос, а не добавьте новые комментарии. – leaf

+1

ОК сэр. это уже нормально, сэр. спасибо за совет :) – Vincent

+1

oopppps .. щедрость недействительна. Я просто тестировал его. извините – Vincent

ответ

3

Вы можете использовать \b для обнаружения границы слова:

var s = "There are two sexes: female and male. males are blue, females are red"; 
s = s.replace(/\bmale\b/g, "smurf"); 
console.log(s); 
// There are two sexes: female and smurf. males are blue, females are red" 
// both female, males and females don't match \bmale\b 

Без \b вы получите:

There are two sexes: fesmurf and smurf. smurfs are blue, fesmurfs are red 

Если вы измените эту строку:

var searchthis = new RegExp($(' #emp_search ').val().replace(/ /g,"|"), 'i'); 

к

var searchthis = new RegExp("\\b" + $(' #emp_search ').val().replace(/ /g,"|") + "\\b", 'i'); 

это работает но это означает, что поиск Jo не даст вам John либо.

+1

Мне действительно нужно положить «\ bmale \ b»? – Vincent

+1

Нет, используйте '/ \ bmale \ b /' – Halcyon

+0

извините im только что нового в программировании. вы видели мой jsfiddle? – Vincent

Смежные вопросы