日期:2014-05-19  浏览次数:20492 次

求一个 超链接 的正则表达式
VS自带的   http(s)?://([\w-]+\.)+[\w-]+(/[\w-   ./?%&=]*)?  
这个只能匹配类似这样的

http://xxx.xxx.xxx/xxx.xxx?xxx=xx

https:://xxx.xxx.xxx/xxx.xxx?xxx=xx

http://xxx.xxx.xxx/xxx.xxx

我希望还能匹配这样的
http://xxx.xxx.xxx:8080/xxx.xxx
http://xxx.xxx.xxx:8080/xxx.xxx?xxx=xx
http://xxx.xxx.xxx:8080/xxx.xxx?xxx=xx#yyyy
最后面的yy可以是任意字符串,8080可以是任何端口...

http://mmmm:8080/xxx.xxx?xxx=xx#yyyy   (最好也能匹配这个,不好弄的话就算了,我只是为了方便调试...)

不知道该如何改造这个正则?
多谢各位

------解决方案--------------------
在那个基础上改进了一下,符合你要求的三种情况,试下

http(s)?://([\w-]+\.)+[\w-]+:\d+/([\w-]+\.)+[\w-]+(\?[\w-]+=[\w-]+)?(#[\w-]+)?

如果是给出的六种形式都要匹配,这样

http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?(:\d+/([\w-]+\.)+[\w-]+)?(\?[\w-]+=[\w-]+)?(#[\w-]+)?

PS:https:://xxx.xxx.xxx/xxx.xxx?xxx=xx
这个例子多了个: