我正在编写一个正则表达式来检查网站网址,它应检查以下情况:
传:
- 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]+)+(/.*)?$
任何人都可以帮忙吗?
感谢名单。
答案 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)/?([^/]*)/?$