问题描述
- 正则表达式死循环求教
-
用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,}))$
时间: 2024-08-05 17:22:57