多个输入上的角度正则表达式过滤器

时间:2015-07-28 18:03:18

标签: javascript regex angularjs

我正在使用简单的表格过滤器应用程序学习角度,并遇到了一些问题。

我正在尝试在Angular 1.4中实现一个正则表达式过滤器,以便用户可以使用多个值过滤某些输入。另外,我在其他领域有一些简单的输入。我试图从之前的SO答案中推出一个正则表达式过滤器(尽管是针对v1.1)但是不能将它应用于当前只匹配字符串的两个输入。

过滤器:

$scope.regex = function(){
  return function(input, field, regex) {
    var patt = new RegExp(regex);
    var out = [];
    for (var i = 0; i < input.length; i++){
        if(patt.test(input[i][field]))
            out.push(input[i]);
    }
  return out;
  };
};

提前致谢。

Plunker示例here,在控制器中使用了正则表达式过滤器,但未在模板中应用。

1 个答案:

答案 0 :(得分:0)

根据@zeroflagL

的输入解决
appName.filter('regex', function() {
  return function(input, field, regex) {
      var patt;
      var out = [];
      if (regex === undefined) {
        patt = new RegExp(regex);
      }
      else {
        patt = new RegExp(regex.toLowerCase());
      }
      if(input === undefined) {
          return out;
      }
      for (var i = 0; i < input.length; i++){
          if(patt.test(input[i][field].toLowerCase()))
              out.push(input[i]);
      }
    return out;
  };
});

并能够在我的ng-repeat中使用它:

regex:'fieldname':scopeFilter.propertyForFieldName