关于java String.matches方法的疑惑?

fengsky491 2008-10-18 04:20:52
以下代码会导致编译出现死机的情况,
请高人解惑。

public class Test {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//如果把s的长度缩短,就能打印出false;
String s = "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy";
//在这里出现死机现象;
boolean b = s.matches("^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$");
System.out.println(b);
}

}


...全文
689 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
老冯laofeng 2008-10-21
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 fengsky491 的回复:]
引用 4 楼 accp206 的回复:
[接3楼]
我去百度查了一下,果然发现一篇相关的文章:
脆弱的jdk正则函数库(Weak jdk regex)

谢3楼,马上看看
[/Quote]

我也看看
fengsky491 2008-10-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 accp206 的回复:]
[接3楼]
我去百度查了一下,果然发现一篇相关的文章:
脆弱的jdk正则函数库(Weak jdk regex)
[/Quote]
谢3楼,马上看看
fengsky491 2008-10-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 accp206 的回复:]
[接3楼]
我去百度查了一下,果然发现一篇相关的文章:
脆弱的jdk正则函数库(Weak jdk regex)
[/Quote]
谢3楼
fengsky491 2008-10-21
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 qiandongbo 的回复:]
看了下LZ的正则式,应该是匹配的油箱地址,不过不清楚为啥要写这么复杂
[/Quote]
代码是同事写的。
代码测试时,发现这个问题。
tiyuzhongxin789 2008-10-19
  • 打赏
  • 举报
回复
没道理。就算楼主的正则写得不对,也不应该这样的。
应该算是SUN的JDK的一个BUG吧。
qiandongbo 2008-10-18
  • 打赏
  • 举报
回复
看了下LZ的正则式,应该是匹配的油箱地址,不过不清楚为啥要写这么复杂
湖北人在深圳 2008-10-18
  • 打赏
  • 举报
回复
同意楼上的
ZangXT 2008-10-18
  • 打赏
  • 举报
回复
我就不冒死机的危险了,楼上的签名我很赞同.
accp206 2008-10-18
  • 打赏
  • 举报
回复
[接3楼]
我去百度查了一下,果然发现一篇相关的文章:
脆弱的jdk正则函数库(Weak jdk regex)
楼主有兴趣可以去看一看哦,呵呵。

但是,即使JDK存在BUG,也不影响它在绝大多数情况下的正常使用,毕竟验证一大串相同字符的情况是非常罕见的。楼主不必太过担心哦。(试问,天下有几个大型程序或类库是不存在BUG的呢?估计答案是0吧,呵呵)
当然,我们要提高警惕,对于需要正则表达式验证的内容,如果允许,就限制一下客户端输入内容的长度吧。如果不能限制长度,可以考虑换成别的验证方式。
accp206 2008-10-18
  • 打赏
  • 举报
回复
冒着死机的危险给楼主测试了一下,发现果然如此。
如果s的长度较长,程序就会停滞不前,貌似是陷入了死循环。

没道理。就算楼主的正则写得不对,也不应该这样的。
应该算是SUN的JDK的一个BUG吧。
fengsky491 2008-10-18
  • 打赏
  • 举报
回复
没测试过

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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