URL正则表达式

时间:2013-03-27 08:45:12

标签: regex url

我正在编写一个正则表达式来检查网站网址,它应检查以下情况:
传:

- www.example.com
- example.com
- www.example.com/something
- example.com/something
并防止其他所有网址

除了一个案例(www.example)之外,它完美地适用于所有事情,我怎么能处理这个案例 " www.example"不得传递

我的正则表达式:

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

任何人都可以帮忙吗?

感谢名单。

5 个答案:

答案 0 :(得分:1)

试试这个:

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

答案 1 :(得分: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/

答案 2 :(得分:0)

这是验证Django 1.5.1中使用的正则表达式的实际URL:

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行找到。

答案 3 :(得分:0)

试试这个:

_^(?:(?:https?|ftp)://)(?:\S+(?::\S*)?@)?(?:(?!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

他们有一个合理的图表,其中包含大量表达式,每个表达式都有针对每个表达式的传递/失败。

答案 4 :(得分:-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)/?([^/]*)/?$