正则:^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-./?%&=] 应该是 任意单字符或 - 或 . 或 / 或 ? 或 % 或 & 或 =
是或的关系为什么 =&?/ 几个字符都同时出现了 依然能验证通过?
请大家帮忙看下
我分析的问题出在哪里,多谢!
作用:验证Internet网址
我的分析:
http:// 特定字符
([\\w-]+\\.)+ 1个或多个([\\w-]+\\.)
[\\w-]+\\. 1个或多个[\\w-]与.
[\\w-] 任意单字符或 -
[\\w-]+ 一个或多个 [\\w-]
(/[\\w-./?%&=]*)? 0个或1个 (/[\\w-./?%&=]*)
/[\\w-./?%&=]* /与0个或多个[\\w-./?%&=]
[\\w-./?%&=] 任意单字符或 - 或 . 或 / 或 ? 或 % 或 & 或 =
测试网址:
http://ajku.tgv/=&?/
返回true问题:[\\w-./?%&=] 应该是 任意单字符或 - 或 . 或 / 或 ? 或 % 或 & 或 =
是或的关系为什么 =&?/ 几个字符都同时出现了 依然能验证通过?
请大家帮忙看下
我分析的问题出在哪里,多谢!
也就是可以有0个或多个满足\w-./?%&=的字符
匹配0-N次最后的?表示 这些字符也可以不存在中括号内的字符可以匹配不止一次
对于[-+.]* 这种形式,正则是如何匹配的?
(1)
是说 - + .都作为普通字符 可以任意出现
如:--++..++--
(2)
+在正则里代表1个或多个, .代表任意字符
那这个正则的解释就变成了 一个或多个 - 与任意一个字符的组合 再重复0次或多次总的来说就是,[]里面的内容是作为普通字符还是也具有正则的特殊含义?
包括上面的[\\w-./?%&=]*
里面的\w还代表单字符吗?
直接这样就可以啊:
[-+.]*