2017-02-24 56 views
0

是我在AngularJS范围字段名为摆脱AngualrJS筛选记录与

这始终是一个4字母的代码,如1A22或4D23(数字,字母,数字,数字)

我想过滤掉(即未示出)的任何满足某些条件的

  • 具有2K
  • 开始用5
  • 开始1C
  • 012开始

现在我知道我可以在我的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-重复

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

回答

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

+0

SOlid正则表达式,并设法写过滤器去与它 – MOLEDesign