2011-03-24 62 views
2

我需要一個正則表達式來驗證絕對URL或相對URL。正則表達式驗證絕對URL或相對URL

  • http://www.example.com應該傳遞
  • /example/some.pdf應該傳遞
  • /example.com/some.pdf應該失敗
  • 例子應該失敗
+0

可能的重複[什麼是最好的正則表達式來檢查一個字符串是一個有效的URL](http://stackoverflow.com/questions/161738/what-is-the-best-regular-expression-to-檢查是否是字符串是一個有效的網址) – 2011-03-24 15:20:20

+3

所有的例子**都是**有效的URL。 - 事實上,除了最後一個外,其餘所有內容都是有效的**絕對**網址(您似乎混淆了相對的,絕對的,沒有協議模式),只有最後一個是有效的相對URL。總之,目前還不清楚你在做什麼。 – 2011-03-24 15:20:39

+0

缺陷#4:我在頁面「http://www.somesite.com/blah.html」上。如果我有一個像...這樣的頁面上的鏈接它會帶我到「http://www.somesite.com/example」,它可以是一個有效的網址,最終指向「http://www.somesite.com/example /index.html「或任何你可以用mod_rewrite重定向到的東西......並且在那個註釋中,你可以用mod_rewrite將任何東西重定向到任何東西,所以IOW沒有像嚴格的」無效的「URL那樣的東西 – 2011-03-24 15:25:26

回答

0

Konrad Rudolph正確指出:OP中的所有示例都是有效的URL!你知道一個空字符串也是一個有效的URL嗎?這是真的!如果你真的想驗證一個URL,或者說我要說URI,要讀的第一個文件是:RFC-3986 - Uniform Resource Identifier (URI): Generic Syntax。我一直在尋找到這個問題了一下,寫了(我寫)關於這個問題的文章:

Regular Expression URI Validation

注意與通用 URI這只是交易。您可能需要查看您感興趣的方案(即HTTP)的其他特定要求,例如要求主機名是vaild DNS主機。

3
(http://|/)[^ :]+ 

另外的請注意,/example.com/some是一個有效的網址,因爲文件夾中可能有句點,並且並非所有文件都有擴展名。

根據系統的不同,可能會有更多類型的字符添加到否定括號中。

最簡單的方法是從服務器實際請求文件元數據來檢查它實際存在的天氣,但根本不會使用正則表達式。

+1

其他協議? HTTPS? FTP? SMB?這不太可靠。 – caiosm1005 2015-04-16 16:51:39