这个想法取自here
我有以下代码:
myApp.filter('parseUrlFilter', function () {
var urlPattern = /^E\d{5}-\d{2}$/;
return function (text, target) {
return text.replace(urlPattern, '<a target="' + target + '" href="http://somepage.com?number=$&">$&</a>') + " | ";
};
});
我仍在尝试理解此代码的工作原理,但它不会将文本转换为URL。
就像
E12345-01
不会成为somepage.com?number=E12345-01
我想我缺少有关正则表达式在这里如何工作的信息。任何帮助将不胜感激。
编辑:添加plnkr与machinehead115的一些工作答案
最佳答案
在没有看到您的HTML代码的情况下,我假设您实际上是在绑定/使用过滤器,如下所示:
<div ng-bind-html="'E12345-01' | parseUrlFilter:'_blank'"></div>
为了使过滤器实际将链接文本输出为代码,您需要包括$sce作为过滤器的依赖项,并使用
$sce.trustAsHtml(link)
返回链接:angular.module('app', [])
.filter('parseUrlFilter', function($sce) {
var urlPattern = /^E\d{5}-\d{2}$/;
return function(text, target) {
return $sce.trustAsHtml(text.replace(urlPattern, '<a target="' + target + '" href="http://somepage.com?number=$&">$&</a>') + ' | ');
};
});
这是代码工作的示例plnk。
关于javascript - 用网址替换模式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40773573/