求教一正则表达式

paodan 2010-02-26 11:30:29
求教smb://192.168.0.2/或者smb://username:password@192.168.0.2/的正则式,注:必须以smb://开头,且以/结尾。如果存在用户名和密码,以第二种形式表示。
...全文
117 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
paodan 2010-02-26
  • 打赏
  • 举报
回复
如果

smb://192.168.0.2/或者smb://username:password@192.168.0.2/的后面还有字符串呢,且以“/”结尾,如:smb://192.168.0.2/hello/或者smb://username:password@192.168.0.2/hello/
paodan 2010-02-26
  • 打赏
  • 举报
回复
ip匹配

String ip = "([1-9]|[1-9]\\d|1\\d{2}|2[0-1]\\d|22[0-3])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}"
zhaining522 2010-02-26
  • 打赏
  • 举报
回复
谢谢楼上各位提醒
按照各位的提醒后更改成下面
其中ip验证用的是ls仁兄的
呵呵!


Pattern pattern = Pattern.compile("^(smb://)(\\w+:\\w+@)?((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)/$");
lyh200731 2010-02-26
  • 打赏
  • 举报
回复
测试了下一楼的 能通过啊~ 只是没加ip判定
xierangh 2010-02-26
  • 打赏
  • 举报
回复
上面少点了哦((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
jianghuxiaoxiami 2010-02-26
  • 打赏
  • 举报
回复
另外,对于IP的判断,用正则太长了,下面仅仅是对IP的一个数字进行判断,即0-255之间
(([0-9])|([1-9][0-9])|([1-2][0-5][0-5]))
xierangh 2010-02-26
  • 打赏
  • 举报
回复
ip匹配:(2[0-4]\d|25[0-5]|[01]?\d\d?){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
jianghuxiaoxiami 2010-02-26
  • 打赏
  • 举报
回复
更正下正则,少了一个开头符号 ^

String reg = "^smb://((.*?:)(.*?@))?192.168.0.2/$";

String t1 = "smb://192.168.0.2/";
String t2 = "smb://username:password@192.168.0.2/";
String reg = "^smb://((.*?:)(.*?@))?192.168.0.2/$";
if(t2.matches(reg)){
System.out.println("true");
}else if(t2.matches(reg)){
System.out.println("true");
}
jianghuxiaoxiami 2010-02-26
  • 打赏
  • 举报
回复
String reg = "smb://((.*?:)(.*?@))?192.168.0.2/$";

测试片段

String t2 = "smb://username:password@192.168.0.2/";
String reg = "smb://((.*?:)(.*?@))?192.168.0.2/$";
if(t2.matches(reg)){
System.out.println("true");
}else if(t2.matches(reg)){
System.out.println("true");
}
bayougeng 2010-02-26
  • 打赏
  • 举报
回复
引用 4 楼 licip 的回复:
楼上的确实可以,测试通过了。

smb://username:password@...2/
这个能通过。
smb://username:password@999...2/
这样也能通过。
smb://user2name:password@192.168.1.2/
这样却不能通过
所以,不太严谨。
licip 2010-02-26
  • 打赏
  • 举报
回复
楼上的确实可以,测试通过了。
bayougeng 2010-02-26
  • 打赏
  • 举报
回复
ip地址的解析,也应该再琢磨一下,这样好像不严谨的。
bayougeng 2010-02-26
  • 打赏
  • 举报
回复
username中应该可以包含数字的。
zhaining522 2010-02-26
  • 打赏
  • 举报
回复

Pattern pattern = Pattern.compile("^(smb://)(\\w+:\\w+@)?(\\d{0,3}\\.){3}(\\w{0,3})/$");


这个应该可以
TillPerfect 2010-02-26
  • 打赏
  • 举报
回复
试下:

Pattern p = Pattern
.compile("^(smb://)(\\w+:\\w+@)?((25[0-5]|2[0-4][0-9]|1?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1?[0-9]?[0-9])(/\\w+)*/");


应该可以满足14楼要求

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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