mm1991117
2014-12-11 02:25
采纳率: 100%
浏览 3.5k
已采纳

正则表达式死循环求教

用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 2014-12-11 05:43
    已采纳

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

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

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

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • 兔子党-督察 2014-12-11 02: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,}))$
    
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题