关于一个正则表达式 求分析

zeroto100 2011-09-15 11:17:26
正则:^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-./?%&=] 应该是 任意单字符或 - 或 . 或 / 或 ? 或 % 或 & 或 =
是或的关系

为什么 =&?/ 几个字符都同时出现了 依然能验证通过?
请大家帮忙看下
我分析的问题出在哪里,多谢!
...全文
58 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
q107770540 2011-09-15
  • 打赏
  • 举报
回复
(/[\\w-./?%&=]*)?

匹配 任意单字符或 - 或 . 或 / 或 ? 或 % 或 & 或 =
匹配0-N次

最后的?表示 这些字符也可以不存在

中括号内的字符可以匹配不止一次
遥望那些年 2011-09-15
  • 打赏
  • 举报
回复
注意是[\\w-./?%&=]*
也就是可以有0个或多个满足\w-./?%&=的字符
q107770540 2011-09-15
  • 打赏
  • 举报
回复
.NET里不需要转义
直接这样就可以啊:
[-+.]*
不懂装懂 2011-09-15
  • 打赏
  • 举报
回复
[-\+\.]*这个叫转义字符
zeroto100 2011-09-15
  • 打赏
  • 举报
回复
谢谢楼上两位,还有两个问题:
对于[-+.]* 这种形式,正则是如何匹配的?
(1)
是说 - + .都作为普通字符 可以任意出现
如:--++..++--
(2)
+在正则里代表1个或多个, .代表任意字符
那这个正则的解释就变成了 一个或多个 - 与任意一个字符的组合 再重复0次或多次

总的来说就是,[]里面的内容是作为普通字符还是也具有正则的特殊含义?
包括上面的[\\w-./?%&=]*
里面的\w还代表单字符吗?


110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧