2009-10-15 50 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; 
    } 
}