我的AngularJS范围中有一个名为rid
的字段这总是4个字母的代码,例如1A22或4D23(数字,字母,数字,数字)
我想过滤掉(即没有显示)符合某些条件的任何条件
现在我知道我可以在我的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]+$'"
答案 0 :(得分:1)
你不是那么远。此正则表达式将匹配以2K
,5
或1C
开头的任何文字:
^(?:2K|5|1C)[A-Z0-9]+$
如果你想确保长度是4,你可以使用这个:
^(?=[A-Z0-9]{4}$)(?:2K|5|1C)[A-Z0-9]+$