繁体   English   中英

什么是经过优化的正则表达式以匹配Java中的电子邮件模式

[英]What is the optimized regex to match the email pattern in java

我在程序中使用以下正则表达式来匹配正常工作的电子邮件模式。 模式:

(?i)[a-z0-9!#$%&*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])+

它正确匹配所有电子邮件。 但是现在,我的用例是在电子邮件正则表达式之上应用包含非常大的垃圾值的内容。 例如:30K继续字母数字字符,没有任何空格。 在这种情况下,代码将花费更多的时间。 例如: 超过一分钟 ,正常内容(不包含垃圾内容)的时间不到一秒钟

几个说明:

  1. 为什么系统在匹配正则表达式上的大型垃圾字符时花很长时间
  2. 什么是克服延迟的优化正则表达式

不适用于正则表达式。

  1. 在行中找到字符“ @”

    int = str.indexOf('@'); if(i == -1)返回; 字符串地址= str.substring(0,at-1);

  2. 查找域名

    if(str.substring(at).indexOf('。')== -1)返回; 字符串域= str.substring(at + 1)

  3. 验证不正确的符号

  4. 验证(将SMTP发送到服务器)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM