Regex URL的正则表达式

Regex URL的正则表达式,regex,url,Regex,Url,下面发布的正则表达式用于获取URL,包括example.com等格式的URL。但是,我只希望它能够访问前面有www.或http,https等的URL。换句话说,它应该选择www.example.com。它不应该拾取example.com ((((ht|f)tp(s?))\://)?((www.|[a-zA-Z])([a-zA-Z0-9\-]+\.)([a-zA-Z]{2,8}))(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\;\?\'\\\+&%\$#\=~_\-

下面发布的正则表达式用于获取URL,包括
example.com
等格式的URL。但是,我只希望它能够访问前面有
www.
http
https
等的URL。换句话说,它应该选择
www.example.com
。它不应该拾取
example.com

((((ht|f)tp(s?))\://)?((www.|[a-zA-Z])([a-zA-Z0-9\-]+\.)([a-zA-Z]{2,8}))(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\;\?\'\\\+&%\$#\=~_\-]+))*)
嗯,试试看

((((ht)f)tp(s?):/)(www\)(([a-zA-Z])([a-zA-Z0-9-]+)([a-zA-Z]{2,8})(\:[0-9]+)*(/($[a-zA-Z0-9.\,\?\''+++&%$=[a-zA-Z0-9.\)*)*)

编辑: 是的,我没有真正测试过那个。好的,我也没有测试这个,但我非常仔细地看了看;)

(((((ht)f)tp(s?):/)(www\)([a-zA-Z0-9-]+)([a-zA-Z0-9]+\)([a-zA-Z]{2,8})(\:[0-9]+)*(/($[a-zA-Z0-9.\,\;?\'++&%$)*)


你应该找一个好的正则表达式测试器。我通常使用Expresso,但还有很多其他的。我修改了您的表达式:

((((ht|f)tp(s?))\://)?((www\.)([a-zA-Z0-9-]+\.)([a-zA-Z]{2,8}))(\:[0-9]+)*(/($|[a-zA-Z0-9.\,\;\?\'\+&%\$#\=~_-]+))*)

这里有一个很好的网站来检查您的表达式:

验证URI是否使用regexp格式正确——使用RFC3986中的一个。验证代码是否合理。试图将格式良好且合理的检查组合到一个regexp中太难了。请参阅:

给您:

\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.])(?:[^\s()<>]+|\([^\s()<>]+\))+(?:\([^\s()<>]+\)|[^`!()\[\]{};:'".,<>?«»“”‘’\s]))
\b((?:[a-z][\w-]+:(?:\/{1,3}}[a-z0-9%])www\d{0,3}[。])(?:[^\s()]+\([^\s()]+\)+(?:\([^\s()]+\)(?:\([^\s()]+\)[^!()\[\]};:”,««»“'''''''''''''.''''''''.''''''''''''.'''''''''''.'''''''.''s]))

这是Daven Fireball修订的自由URL正则表达式。

那么它是否有效?你确定只想与美国域名匹配吗?其他国家的TLD部分中有一个额外的点:
www.bbc.co.uk
www.tmnet.com.my
。这个表达式已经适用于获取URL,包括子域。它在其他国家不起作用我想让它只从WWW或http开始的URL:Philipp G已经解决了这个问题,所以他更新的表达式对我来说是最好的。这是TLD部分中多余的点的一个很好的地方。我最初没有考虑这个问题。我需要研究一下。谢谢。你能用更多的例子来阐明需求吗?(特别是关于您的“拾取子域”评论)?说得好,在验证输入是否正确后,可能更容易拒绝特殊情况。抱歉。我在没有进行彻底测试的情况下回答得太快。它确实检查了www.etc。但是,它不再使用子域拾取URL。这一个似乎是随机断开的。例如,在尝试时,它会断开.com。其他域中也会发生这种情况使用http://的位置,因此它并不总是在.com上。@Mike:新表达式,试用它。谢谢!它工作得更好。我会做更彻底的测试,但以前的所有问题似乎都已解决。谢谢您的帮助。此表达式包括一个问题,它会拾取www.或http:之前的所有内容。例如:asfjkljswww.yahoo.com正则表达式将拾取这一行中的所有内容,包括asfj等。我将在下面发布的这篇文章似乎是迄今为止最有希望的:(((((ht)f)tp(s?):/)(www\)(([a-zA-Z0-9-]+)([a-zA-Z0-9]+\)([a-zA-Z]{2,8})(:[0-9]+*(/($)($)[a-zA-Z0-9-+=)*)*,[+++--------+\)对于这个表达式,FrustedWithFormsDesigner值得称赞。@Mike:我提供的正则表达式与asfjkljswww.yahoo.com不匹配,请再次检查。你是对的。我一定是在复制它时出错了。这很有效。谢谢你的帮助!