【AngularJS】文字列中のURLをリンクに置換するフィルターを作った。

stackさんの回答とかを参考に自分が使いやすく。

coreApp.filter('parseUrl', function($sce) {
    var urlPattern = /(http|ftp|https):\/\/[\w-]+(\.[\w-]+)+([\w.,@?^=%&:\/~+#-]*[\w@?^=%&\/~+#-])?/gi;
    return function(text, target, style) {
        style = style || null;
        angular.forEach(text.match(urlPattern), function(url) {
            if (style) {
                text = text.replace(url, '<a target="' + target + '" href='+ url + ' style="' + style + '">' + url + '</a>');
            } else {
                text = text.replace(url, '<a target="' + target + '" href='+ url + '>' + url + '</a>');
            }
        });
        return $sce.trustAsHtml(text);
    };
});

使い方は引数を見てもらえれば一目瞭然だよね。