我正在使用此正则表达式来检测文本字符串中的URL:
/(http(s)?:\/\/.)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}(\.[a-z]{2,6}|:[0-9]{3,4})\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)/gi
结合此功能,用链接替换检测到的字符串:
function linkify(text) {
return text.replace(urlRegex, function(url) {
return "<a href=" + url + ">" + url + "</a>";
});
}
两者都在这里找到:Detect URLs in text with JavaScript
这适用于大多数链接,但是www.fatsoma.com/flatline-cardiff
和
检测到tickets.partyforthepeople.org/events/3633
,但链接到无处,在检测到的链接前添加本地路径,例如http://127.0.0.1:8000/filelocation/tickets.partyforthepeople.org/events/3633
这是否与链接开头没有Https等协议有关?
答案 0 :(得分:0)
这是否与链接开头没有Https等协议有关?
是
尝试添加协议(如果不存在):
function linkify(text) {
return text.replace(urlRegex, function(url) {
if (url.indexOf('http://') === 0 || url.indexOf('https://') === 0) {
return "<a href='" + url + "'>" + url + "</a>";
}
return "<a href='//"+url+"'>"+url+"</a>";
});
}