2009-10-15 60 views
0

我有一個數據網格和一個搜索字段。我已經設置搜索字段的change事件來運行datagrid的filterfunction。我能夠匹配整個術語,但我希望能夠使用正則表達式進行漸進式搜索(例如,「Pe」匹配「Peter」)。我試圖創建一個正則表達式來比較字段,但我似乎無法讓它工作。如何返回RegExp的結果?這是目前的功能正則表達式搜索字段中的過濾功能flex

private function usersFilter(item:XML):Boolean { 
    var searchResult:XMLList; 
    var searchCheck:RegExp = /[^a-zA-Z]*/ 
    var searchTerm:Object = searchCheck.exec(searchInput.text); 
    searchResult = item.(firstName==searchTerm.result); 
    if (searchResult.length() > 0) { 
      return true; 
    } else { 
     return false; 
    } 
} 

回答

1

我明白了!我想要做的是使用「匹配」功能,這是一個String對象的方法,它可以將正則表達式作爲匹配的模式。因此,爲了使dataGrid中的項目與searchInput.text的case-insensitive版本匹配,我使用了以下代碼(與數據網格的名和姓值匹配)

private function usersFilter(item:XML):Boolean { 
    var searchResult:XMLList; 
    var myTest:RegExp = new RegExp(searchInput.text,"i"); 
    searchResult = item.(firstName.match(myTest)||lastName.match(myTest)); 
    if (searchResult.length() > 0) { 
     return true; 
    } else { 
     return false; 
    } 
}