2009-06-16 46 views

回答

3

正則表達式像一個冠軍。

你可以自己寫一個,這裏有一個簡單的例子:

(https?://)?.+$ 

一個小Googling發現我的東西多一點具體的,在更嚴格的驗證方式:

^(https?://)?(([0-9a-z_!'().&=$%-]:)?[0-9a-z_!'().&=$%-]@)?(([0-9]{1,3}\.){3}[0-9]{1,3}|([0-9a-z_!'()-]\.)([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\.[a-z]{2,6})(:[0-9]{1,4})?((/?)|(/[0-9a-z_!*'().;?:@&=$,%#-])/?)$ 

來源:http://www.geekzilla.co.uk/view2D3B0109-C1B2-4B4E-BFFD-E8088CBC85FD.htm (顯然測試複製和粘貼的正則表達式,就像你使用任何複製粘貼代碼一樣)

如果你不知道ho W¯¯在PHP中使用正則表達式,它是那樣簡單:

$valid = preg_match($pattern, $urlOrStringToValidate); 

其中$模式= 「/(https?://)?.+/」 或類似的東西,之間/和/

Javascript在String類型上有一個名爲match的對象方法。

var urlString = "http://www.XYZ.com"; 
var isValidURL = urlString.match(/(https?:\/\/)?.+/); 
+0

我忘了提及的另一件事,正則表達式只會驗證URL的格式良好。您可以通過執行諸如向url發送AJAX請求等方式實際查看這些url是否有效。(Jquery:$ .ajax({url:urlToTest,error:function(){alert(「not valid url」);}}) ; 同樣,你可以捲曲或做一個gethostbyname(http://us2.php.net/manual/en/function.gethostbyname.php)來測試 但是,我的經驗測試一個url的實際有效性說服務器花了很長時間迴應,所以ajax失敗了,或者主機名是一個ip地址......真的很痛苦, – Ben 2009-06-16 09:32:34

+0

以上條件將驗證以下兩個條件嗎?www.xyz.com和 http://www.xyz.com – Avinash 2009-06-16 09:47:06

3

你最好使用正則表達式來做到這一點。事情是這樣的:

^((ht|f)tp(s?)\:\/\/|~/|/)?([\w]+:\[email protected])?([a-zA-Z]{1}([\w\-]+\.)+([\w]{2,5}))(:[\d]{1,5})?((/?\w+/)+|/?)(\w+\.[\w]{3,4})?((\?\w+=\w+)?(&\w+=\w+)*)? 

可以使用preg_match功能和JavaScript中使用match()函數使用正則表達式在PHP。

E.g(Javascript)。

function validateUrl(url) 
{ 
    var pattern = '^((ht|f)tp(s?)\:\/\/|~/|/)?([\w]+:\[email protected])?([a-zA-Z]{1}([\w\-]+\.)+([\w]{2,5}))(:[\d]{1,5})?((/?\w+/)+|/?)(\w+\.[\w]{3,4})?((\?\w+=\w+)?(&\w+=\w+)*)?'; 

    if(url.match(pattern)) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
}