2014-07-23 42 views
0

這是我的搜索代碼。正則表達式有一些問題,當我搜索全文工作正常,但我搜索中間字符它不工作。在正則表中搜索不正確的輸出

例如,如果我搜索「蘋果」或「ap」的工作,但如果我與搜索「PL」它不工作。下面是我的代碼對不好的英語感到抱歉。

var $rows = $('#dvtable tr'); 

$('#box').keyup(function() { 

        var val = '^(?=.*\\b' + $.trim($(this).val()).split(/\s+/).join('\\b)(?=.*\\b') + ').*$', 
         reg = RegExp(val, 'i'), 
         text; 

        $rows.show().filter(function() { 
         text = $(this).text().replace(/\s+/g, ' '); 
         return !reg.test(text); 
        }).hide(); 
       }); 
+1

它不會匹配中間,你使用'^','''錨點... – hwnd

回答

0

您正在搜索開始的字this.val()'^(?=.*\b' + $.trim($(this).val()))

如果您希望正則表達式匹配與內子,你需要指定,可能是在你的文字

'^(?=.*\\b\\w*' + $.trim($(this).val())) 
一些字母

例如:

var literal = 'ap' 
var val = '^(?=.*\\b\\w*' + $.trim(literal).split(/\s+/).join('\\b)(?=.*\\b') + ').*$', reg = RegExp(val, 'i') 
reg.test("apple") 
>>>>true 
var literal = "pl" 
var val = '^(?=.*\\b\\w*' + $.trim(literal).split(/\s+/).join('\\b)(?=.*\\b') + ').*$', reg = RegExp(val, 'i') 
reg.test("apple") 
>>>>true 
var literal = 'x' 
var val = '^(?=.*\\b\\w*' + $.trim(literal).split(/\s+/).join('\\b)(?=.*\\b') + ').*$', reg = RegExp(val, 'i') 
reg.test("apple") 
>>>>false 
+0

感謝它現在的工作。 – Bhavesh

+0

完美。你能接受答案嗎? – xecgr