2013-03-27 163 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

他们已经有了一个合理的图表有很多表情的合格/不合格的针对每个表达式每一种情况下。