2 mm1991117 mm1991117 于 2014.12.11 10:25 提问

正则表达式死循环求教

用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);

    希望哪位高手能给分析下

2个回答

Hjupan
Hjupan   2014.12.11 13:43
已采纳

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

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

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

q107770540
q107770540   Ds   Rxr 2014.12.11 10:48

试试这个正则来匹配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,}))$
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!