我一直在尝试自己和在线搜索来编写此正则表达式,但没有成功。使用正则表达式的特定网域网址验证
我需要验证给定的URL是来自特定的域和格式良好的链接(在PHP中)。例如:
好域名:example.com
来自example.com的那么好网址:
- http://example.com/so/this/is/good
- http://example.com/so/this/is/good/index.html
- http://www.examle.com/so/this/is/good/mice.html#anchortag
- http://anysubdomain.example.com/so/this/is/good/wow.php
- http://anysubdomain.example.com/so/this/is/good/wow.php?search=doozy 来自example.com
所以不良网址不是:
一些注意事项: 我不在乎 “HTTP” VERUS “https”,但如果它重要,你认为“http”总是 将使用此正则表达式的代码是PHP所以加分那。
UPDATE 2010:
格鲁伯增加了一个伟大的URL正则表达式:
?i)\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))
见他的职位:An Improved Liberal, Accurate Regex Pattern for Matching URLs
您的“良好域”示例是**不是**有效的URL(缺少路径)。 – 2009-07-02 14:04:09
@Nikolar Ruhe:路径实际上是可选的:“http://”hostport [“/”hpath [“?”搜索]](请参阅RFC 1738) – Gumbo 2009-07-02 14:07:32
这不是指示有效的URL,而是它指示示例URL使用的有效域,但也许我应该只说'blah.com',不再提供。无论哪种方式,我认为这一点是成立的。 – donohoe 2009-07-02 14:08:16