VS自带的 http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)? 
这个只能匹配类似这样的http://xxx.xxx.xxx/xxx.xxx?xxx=xxhttps:://xxx.xxx.xxx/xxx.xxx?xxx=xxhttp://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 (最好也能匹配这个,不好弄的话就算了,我只是为了方便调试...)不知道该如何改造这个正则?
多谢各位

解决方案 »

  1.   

    在那个基础上改进了一下,符合你要求的三种情况,试下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
    这个例子多了个:
      

  2.   

    多谢回答~不过楼上给的正则不能匹配这个啊..
    http://community.csdn.net:8080/或者http://community.csdn.net:8080/fff/fff/
    这个也不能匹配
    貌似还是端口那个地方匹配的有问题...
      

  3.   

    http(s)?://([\w-]+\.)+[\w-]+(:[\d-]+)?(/[\w- ./?%&=]*)?(#[\w-]+)?我改半天改成这样..能符合我的要求了~~
      

  4.   

    这类正则当然不可能完全通用的,一般是具体问题具体分析,需要匹配什么样的超链接,就写什么样的正则http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?(:\d+/)?(([\w-]+\.)*[\w-]+/?)*(\?[\w-]+=[\w-]+)?(#[\w-]+)?
      

  5.   

    http(s)?://([\w-]+\.)+[\w-]+(:[\d-]+)?(/[\w- ./?%&=]*)?(#[\w-]+)?我改半天改成这样..能符合我的要求了~~
    ---------------------------------
    这样当然也可以,事实上我用
    http(s)?://([\w-]+\.)+[\w-]+.*
    就什么样的网址都可以匹配了,问题只是这个正则比较宽泛,不够严谨罢了
      

  6.   

    http(s)?://([\w-]+\.)+[\w-]+(:[\d]+)?(/[\w- ./?%&=]*)?(#[\w,]+)?这是最后结果了,应该木有啥问题了