你好,在一个项目中,我们有以下代码来搜索网址&发送电子邮件并用链接替换它们。这项工作很棒,但它与
等网址不匹配有一个斜杠。
API.prototype.replaceURLS = function(str) {
var patterns = [
"\\b((?:https?|ftp)://[^\\s\"'<>]?/+)\\b",
"\\b(www\\.[^\\s\"'<>]?/+)\\b",
"\\b(\\w[\\w.+-]*@[\\w.-]+\\.[a-z]{2,6})\\b"
];
var reg = new RegExp(patterns.join('|'), "gi");
return str.replace(reg, function(match, url, www, mail) {
if (url) {
return "<a target='_blank' href=\"" + url + "\">" + url + "</a>";
}
if (www) {
return "<a target='_blank' href=\"http://" + www + "\">" + www + "</a>";
}
if (mail) {
return "<a href=\"mailto:" + mail + "\">" + mail + "</a>";
}
// just in case...
return match;
});
};
正则表达式:
\b((?:https?|ftp):\/\/[^\s"'<>]+)\b|\b(www\.[^\s"'<>]+)\b|\b(\w[\w.+-]*@[\w.-]+\.[a-z]{2,6})\b
答案 0 :(得分:0)
好吧,我最终删除了所有\b
标志,并且工作正常