正则表达式URL检测javascript

时间:2017-12-30 12:12:56

标签: javascript regex url

我正在使用此正则表达式来检测文本字符串中的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等协议有关?

1 个答案:

答案 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>";
    });
}