How can I find if text contains a url string. I mean if I have
Sometexthttp://daasddas some text
I want http://daasddas to be achored or maked as a link wit javascript
    function replaceURLWithHTMLLinks(text)
    {
      var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
      return text.replace(exp,"<a href='$1'>$1</a>"); 
    }
                        While the code above works good if all given URLs are full (http://mydomain.com), I had problems parsing a URL like:
www.mydomain.com
i.e. without a protocol. So I added some simple code to the function:
var exp = /(\b(((https?|ftp|file|):\/\/)|www[.])[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
var temp = text.replace(exp,"<a href=\"$1\" target=\"_blank\">$1</a>");
var result = "";
while (temp.length > 0) {
    var pos = temp.indexOf("href=\"");
    if (pos == -1) {
        result += temp;
        break;
    }
    result += temp.substring(0, pos + 6);
    temp = temp.substring(pos + 6, temp.length);
    if ((temp.indexOf("://") > 8) || (temp.indexOf("://") == -1)) {
        result += "http://";
    }
}
return result;
If someone should fine a more optimal solution to add a default protocol to URLs, let me know!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With