2012-07-02 177 views
22

我一直在尋找答案,並且我找到的所有答案都沒有在JavaScript中。檢查一個字符串是否以http開頭使用Javascript

我需要一種方法,在JavaScript中,檢查一個字符串是否以http,https或ftp開頭。如果它不是以其中一個開始,我需要在http://之前加上字符串。 indexOf不適用於我我不認爲我需要http,https或ftp。另外我不想像google.com/?q=http://google.com這樣的東西來觸發它的有效性,因爲它不以http開頭,而indexOf會觸發它爲真(如果我沒有完全錯誤)。

最接近的PHP正則表達式,我發現是這樣的:

function addhttp($url) { 
    if (!preg_match("~^(?:f|ht)tps?://~i", $url)) { 
     $url = "http://" . $url; 
    } 
    return $url; 
} 

Source: How to add http if its not exists in the url

我只是不知道如何將其轉換爲JavaScript。任何幫助將不勝感激。

+0

可恥的混亂刪除 – Foon

+0

這是Java的,而不是Java腳本。 – tskuzzy

+0

[正則表達式爲瀏覽器網址]的可能重複(http://stackoverflow.com/questions/2899454/regular-expression-for-browser-url) – Hamish

回答

72
function addhttp(url) { 
    if (!/^(f|ht)tps?:\/\//i.test(url)) { 
     url = "http://" + url; 
    } 
    return url; 
} 
+4

我建議爲'url'值添加檢查以避免在沒有值(或空)串時返回'http://'提供:if(url &&!/ ^(f | ht)tps?:\/\ // i.test(url)) –

+0

+1不區分大小寫 –

2

這應該工作:

var re = /^(http|https|ftp)/ 
15

這應該工作:

var pattern = /^((http|https|ftp):\/\/)/; 

if(!pattern.test(url)) { 
    url = "http://" + url; 
} 

jsFiddle

的JavaScript和Java
+0

最好的!,非常感謝。 – RobertoAllende

8
var url = "http://something.com" 
if(url.indexOf("http") == 0) { 
    alert("yeah!"); 
} else { 
    alert("No no no!"); 
} 
+1

修剪網址,因爲如果你有'SPACE http'比它有問題:P –

相關問題