正则:^http://([\\w-]+\\.)+[\\w-]+(/[\\w-./?%&=]*)?$
作用:验证Internet网址
我的分析:
http://              特定字符 
([\\w-]+\\.)+        1个或多个([\\w-]+\\.)
[\\w-]+\\.           1个或多个[\\w-]与.
[\\w-]               任意单字符或 -
[\\w-]+              一个或多个 [\\w-]
(/[\\w-./?%&=]*)?    0个或1个 (/[\\w-./?%&=]*)
/[\\w-./?%&=]*       /与0个或多个[\\w-./?%&=]
[\\w-./?%&=]         任意单字符或 - 或 . 或 / 或 ? 或 % 或 & 或 =
测试网址:
http://ajku.tgv/=&?/
返回true问题:[\\w-./?%&=]         应该是 任意单字符或 - 或 . 或 / 或 ? 或 % 或 & 或 =
是或的关系为什么 =&?/ 几个字符都同时出现了 依然能验证通过?
请大家帮忙看下
我分析的问题出在哪里,多谢!

解决方案 »

  1.   

    注意是[\\w-./?%&=]*
    也就是可以有0个或多个满足\w-./?%&=的字符
      

  2.   

    (/[\\w-./?%&=]*)?匹配 任意单字符或 - 或 . 或 / 或 ? 或 % 或 & 或 =
    匹配0-N次最后的?表示 这些字符也可以不存在中括号内的字符可以匹配不止一次
      

  3.   

    谢谢楼上两位,还有两个问题:
    对于[-+.]* 这种形式,正则是如何匹配的?
    (1)
    是说 - + .都作为普通字符 可以任意出现
    如:--++..++-- 
    (2)
    +在正则里代表1个或多个, .代表任意字符
    那这个正则的解释就变成了 一个或多个 - 与任意一个字符的组合 再重复0次或多次总的来说就是,[]里面的内容是作为普通字符还是也具有正则的特殊含义?
    包括上面的[\\w-./?%&=]*
    里面的\w还代表单字符吗? 
      

  4.   

    .NET里不需要转义
    直接这样就可以啊:
    [-+.]*