How to use Regex with ng-repeat in AngularJs?
Regular expressions are indeed powerful and can handle all kinds of matches including an exact match like ^c5$
.
However, the body of this question reveals that the issue would be addressed by always filtering by exact matches.
You can specify that the Angular filter should use the exact match comparator by setting the 3rd argument to true
:
filter:{type:'c5'}:true
You can use function in filter expression. So basically, you can do any filtering possible with javascript.
<li ng-repeat="name in names | filter:myFilter"> {{ name }}
In controller:
$scope.myFilter = function(user) {
return /^c5$/.test(user.type);
};
What tosh mentions should work for you!
If you find yourself wanting to filter by regex more often you can create a custom filter. Something like this fiddle will let you specify a field to check against a regex:
var myApp = angular.module('myApp', []);
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;
};
});
Used like this where 'type'
indicates the field you are checking against (in this case a field named type):
<div ng-repeat="user in users | regex:'type':'^c5$'"></div>