2013-11-26 132 views
1

我有一個代碼在jquery中搜索多個單詞。但是我在搜索男性和女性這個詞時遇到了問題。當我輸入單詞男性時,顯示結果是女性和男性,因爲女性這個詞包含「Fe」+「男性」字符,我將如何解決這個問題。 當我輸入男性時,它應該只顯示男性。而女字會當我輸入「男聲女聲」或「女」只顯示在一個表中搜索多個詞

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或男性還是女性」?這將幫助您準確定義您想要的內容。請更新您的問題,而不是添加新評論。 – 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

抱歉,我只是編程方面的新手。你見過我的jsfiddle嗎? – Vincent