我要验证个邮箱
if ( text.matches("^\\s*\\w+(?:\\.{0,1}[\\w-]+)*@[a-zA-Z0-9]+(?:[-.][a-zA-Z0-9]+)*\\.[a-zA-Z]+\\s*$")) { return true;
}
但是验证A7C5C7E8-6CAE-5055-S4D6-6AD7D9A855F2这类字符串经常出现卡死问题,验证不了求高手解决,网上下了很多验证邮箱的正则表达式但是放在matches()里都有语法错误求解决
如matches(/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/)
这么解决啊!

解决方案 »

  1.   

    正则表达式符合java的正则表达式规范即可。网上下的没有考虑到java的字符串 转义,所以在具体处理时,你要针对某些特殊字符作处理。
    比如
    \w应该写成\\w其它的没要求
    /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/
    写成
    ”^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"
      

  2.   

    看你想怎么验证了,你在网上找到的不一定是使用于java的,所以要自己修改,以你的写法为例子
    matches("^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$");
    ^表示开头,$表示结尾
    \\w表示单词,+表示出下一次或多次
    [-+.]表示限定用[]里面的字符
    *表示出现0次或多次,即可有可无
    @就是@字符本身
      

  3.   


        Pattern pattern = Pattern.compile("^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$");     Matcher m = pattern.matcher("[email protected]");
        
        System.out.println(m.matches());
    这个可以