2012-12-18 55 views
0

我正在嘗試爲用戶輸入到文本框中的字符串找到匹配的模式,在大多數情況下,我使用我的代碼在某些情況下找到了代碼,它不會返回所有需要的結果。我附上一個鏈接的jsfiddle展示其wrking,我也粘貼代碼以備將來參考從元素列表中找到匹配的模式

http://jsfiddle.net/faphf/2/

$("#facetSearchBox").live("keyup", 
    function() { 
     $("#test").empty(); 
     facetSearch(); 
    }); 



function facetSearch(){ 
var facetSearchTerm = $("#facetSearchBox").val(); 
facetSearchTerm = facetSearchTerm.toLowerCase(); 
var inputArray=["mark zuckerberg","ben s bernanke","ben bernanke","sven grundberg", "michael bloomberg","robert powell","kenneth lieberthal","frank boulben"]; 

    var re = new RegExp(facetSearchTerm, "ig"); 
    var outputArray = inputArray.filter(function(item) { 
    return re.test(item); 
}); 
for(var k=0; k<outputArray.length;k++){ 
$("#test").append(outputArray[k] + "<br>"); 
} 
} 

嘗試搜索奔,它不會返回所需的全部結果...這將是如果你能幫我說出代碼有什麼問題,這會有幫助嗎?

回答

4

從正則表達式中刪除全局修飾符g。它應該在那之後正常工作。

var re = new RegExp(facetSearchTerm, "i"); 

測試鏈接:http://jsfiddle.net/faphf/5/

編輯:

Why RegExp with global flag in Javascript give wrong results?

+0

它的工作,BT用它來找到所有的比賽..吧?? – user1371896

+0

是的,它發現所有匹配 –

+0

它的工作......我將接受它作爲正確的一個... B只是想知道真正的問題,爲什麼它沒有工作..我可以接受3分鐘後的答案 – user1371896

1

用途:

var re = new RegExp(facetSearchTerm, "i"); 

參見:fiddle

對於字邊界匹配:

var re = new RegExp("\\b" + facetSearchTerm, "i"); 

參見:fiddle

+0

這太有用了...謝謝.. – user1371896

相關問題