我有以下代碼用於將文本中的http URL轉換爲錨標籤。它尋找任何以http,用空格(或輸入的開始/結束)包圍如何將由空格填充的url填入鏈接
function linkify (str) {
var regex = /(^|\s)(https?:\/\/\S+)($|\s)/ig;
return str.replace(regex,'$1<a href="$2" target="_blank">$2</a>$3')
}
// This works
linkify("Go to http://www.google.com and http://yahoo.com");
// This doesn't, yahoo.com doesn't become a link
linkify("Go to http://www.google.com http://yahoo.com");
它不工作的情況是,如果我只有兩個環節之間的一個空間。我假設這是因爲兩個鏈接之間的空間不能用於匹配兩個URL,在第一次匹配之後,URL已被使用後的空間。
有人可以提出這樣的正則表達式的方法嗎?我可以自己掃描字符串,尋找正則表達式的方式(或者某種方式,不需要掃描字符串我自己並自己創建一個新字符串。
爲什麼你開始空白?爲什麼不讓你的正則表達式模式以http開始,並以找到的第一個空白匹配結束。然後你的第二個鏈接將被匹配,因爲它包含http直到匹配一個空格。 – Mark
@Mark因爲我不想讓「youhttp://ww.google.com成爲鏈接」 –
在這種情況下,您不會成爲鏈接的一部分。 http://www.google.com會和你在鏈接之前只是一個字符串。我認爲這將是找到有效鏈接的更準確的方法。 – Mark