AngualrJS过滤记录与

时间:2017-02-24 10:49:08

标签: angularjs regex filter angularjs-scope

我的AngularJS范围中有一个名为rid

的字段

这总是4个字母的代码,例如1A22或4D23(数字,字母,数字,数字)

我想过滤掉(即没有显示)符合某些条件的任何条件

  • 以2K开头
  • 以5
  • 开头
  • 以1C开头

现在我知道我可以在我的ng-repeat(服务中的服务)上构建单独的过滤器,但我认为前进的方法是一个很好的自定义过滤器,我可以输入一系列我想要过滤掉的条件。我怀疑一串正则表达式条件就是答案

/^2k|5|1C*/

任何人都可以建议最好的方法来接近这个自定义过滤器吗?感谢

编辑:这是我的解决方案,来自接受的答案和以下过滤器的正则表达式

myApp.filter('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;
    };
});

然后我在我的ng-repeat中使用它

regex:'rid':'^(?:2K|5|1C)[A-Z0-9]+$'"

1 个答案:

答案 0 :(得分:1)

你不是那么远。此正则表达式将匹配以2K51C开头的任何文字:

^(?:2K|5|1C)[A-Z0-9]+$

See the demo

如果你想确保长度是4,你可以使用这个:

^(?=[A-Z0-9]{4}$)(?:2K|5|1C)[A-Z0-9]+$

See the demo