簡體   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