正则表达式死循环求教

用java执行 正则表达邮箱验证的时候 死循环 ,代码如下
String email ="dnjnfslkffkjkjkslioeo9edkdjfks";
String e = "^(\w+((-\w+)|(.\w+))*)+\w+((-\w+)|(.\w+))*\@[A-Za-z0-9]+((.|-)[A-Za-z0-9]+)*.[A-Za-z0-9]+$";
boolean b = Pattern.matches(e, email);
System.out.println(b);

    希望哪位高手能给分析下

首先这个是JDK的bug。到目前没解决。可以到网上搜索。
其次,为了避免死循环,应该避免正则表达式匹配循环次数过多,那样就会陷入死循环。

所以,需要重新修改下正则表达式。

可以参考这篇文章。
http://www.99inf.net/SoftwareDev/Java/53834.htm

试试这个正则来匹配EMAIL:

 ^(([^<>()\[\]\.,;:\s@""]+(\.[^<>()\[\]\.,;:\s@""]+)*)|("".+""))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$