创建一个角度正则表达式过滤器

时间:2016-03-09 20:35:15

标签: angularjs regex angularjs-filter

我正在尝试创建一个Angular过滤器来提供正则表达式功能。我正在使用flickr API - see example here并且返回的json对象的一个​​键值是

{......
   "author": "nobody@flickr.com (John Doe)"
....}

目前,这是我的过滤器正则表达式功能:

app.filter('regex', function() {
    return function(input, regex) {
        return input.match(regex);  
    }
})

在我的 html 中我有这个

<p>{{user.author | regex:'(/\((.*?))\)/g)'}}</p>

并将过滤器注入控制器,如下所示

app.controller('testCtrl', function ($http, regexFilter) {
      //do controller stuff!
}

我希望仅隔离用户的姓名,然后删除nobody@flickr.com,以便返回John Doe

非常感谢任何有关如何实现这一点的指导。

谢谢!

1 个答案:

答案 0 :(得分:5)

你可以尝试添加像这样的过滤器

var myApp = angular.module('myApp', []);
myApp.filter('regex', function() {
   return function(val){
     var RegExp = /\(([^)]+)\)/;
     var match = RegExp.exec(val);
     return match[1];
   };
});
myApp.controller('ctrl', function($scope){
    $scope.user = {'author': "nobody@flickr.com (John Doe)"};
});

在这里工作JSFiddle http://jsfiddle.net/WfuAh/147/