2013-03-27 209 views
1

我寫一個正則表達式來檢查網站網址應檢查以下情況:
通:

- www.example.com
- example.com
- www.example。 COM /東西
- example.com/something
並阻止任何其他URLURL的正則表達式

其完美的工作對每一件事情,除了一種情況下(www.example),我怎麼能韓德爾這種情況下
「WWW。例如,」不得通過

我的正則表達式:

^[a-zA-Z0-9][a-zA-Z0-9]+([.][a-zA-Z0-9]+)+(/.*)?$ 

任何一個可以幫助嗎?

Thanx。

+0

www.example這是一個有效的URL嗎? – shazin 2013-03-27 08:49:54

+0

@ shazin 它不得通過 沒有它不是一個有效的URL – mohammad 2013-03-27 08:51:04

+0

您無法驗證實際。除了你提供一個允許匹配域名的白名單。因爲您不能讓正則表達式來判斷.example是否是頂級域名 – LotusH 2013-03-27 08:54:21

回答

1

試試這個:

^(www\.)?(?!www)[a-zA-Z0-9]+\.[a-zA-Z]{2,6}/?[a-zA-Z0-9]+$ 
1

繼承人的最好我能得到

(www.){1}[a-zA-Z0-9]+[.]{1}[\w]+[/\w]* 

結果

www.example.com  - true 
www.example.com/ - true 
www.example.com/xyx  - true 
www.example.com/xy/s/ - true 
www.example.  - False 
www.example   - False 

請注意,這不會接受 'example.com' 測試@http://gskinner.com/RegExr/

-1

不是最好正則表達式,但工作在很多情況下:

^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}(/.*)*$ 

編輯:

^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+(com|org|info|biz|us)/?([^/]*)$ 

允許斜線:

^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+(com|org|info|biz|us)/?([^/]*)/?$ 
+0

'example.com /某事/ foo'和'www.exa'通過 – oleq 2013-03-27 09:29:41

+0

是,驗證你需要(所有頂級域名測試)更復雜的正則表達式:'^([A-ZA-Z0-9]([ A-ZA-Z0-9 \ - ] {0,61} [A-ZA-Z0-9])\)+(COM?|?組織|資訊| BIZ |美國)/([^ /] *) $' – 2013-03-27 09:36:44

+0

您可能會添加'net'作爲tld。 – 2013-03-27 09:41:44

0

這是實際的URL驗證Django 1.5.1中使用的正則表達式:

import re 
regex = re.compile(
     r'^(?:http|ftp)s?://' # http:// or https:// 
     r'(?:(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+(?:[A-Z]{2,6}\.?|[A-Z0-9-]{2,}\.?)|' # domain... 
     r'localhost|' # localhost... 
     r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}|' # ...or ipv4 
     r'\[?[A-F0-9]*:[A-F0-9:]+\]?)' # ...or ipv6 
     r'(?::\d+)?' # optional port 
     r'(?:/?|[/?]\S+)$', re.IGNORECASE) 

這既可以使用ipv4,也可以使用ipv6地址以及GET參數。

code here發現,線路44

0

試試這個:

_^(?:(?:https?|ftp)://)(?:\S+(?::\S*)[email protected])?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\x{00a1}-\x{ffff}0-9]+-?)*[a-z\x{00a1}-\x{ffff}0-9]+)(?:\.(?:[a-z\x{00a1}-\x{ffff}0-9]+-?)*[a-z\x{00a1}-\x{ffff}0-9]+)*(?:\.(?:[a-z\x{00a1}-\x{ffff}]{2,})))(?::\d{2,5})?(?:/[^\s]*)?$_iuS 

我不能居功,雖然;我猛地從這裏:

http://mathiasbynens.be/demo/url-regex

他們已經有了一個合理的圖表有很多表情的合格/不合格的針對每個表達式每一種情況下。