[英]Regex for email validation in Redux form
我正在嘗試構建一個用於電子郵件驗證的正則表達式,我還有幾個條件要檢查:
允許:大寫和小寫英文字母,數字0到9
允許:“_”、“-”、“.”、“@”和“'”;
3.a. 特點 ”。” 如果不是第一個或最后一個字符,則允許提供
3.b. “。” 不會連續出現兩次或多次
3.c. “。” 必須在域名中至少出現一次
不應包含“.@”或“@”。
不應以“.”開頭
“@”必須出現一次
在域名中,字符串長度,在最后一個“.”之后。 , 應該至少有 2 個字符
域名中不允許以“_”開頭
我創建了以下正則表達式:
^[a-zA-Z0-9_'-]{1}[a-zA-Z0-9._'-]*([^.]@[^._])([a-zA-Z0-9_.'-])+[.]{1}[a-zA-Z0-9_'-]{2,}$
我沒有涵蓋除第 3.b 節之外的所有部分。
有效電子郵件示例: ya.ll.tj@gg.cc 無效電子郵件示例: ya..lf@dd.cc , yssss...@kk.dd
謝謝
在模式的開頭,對.*\\.{2}
進行負前瞻以確保永遠不會有兩個.
連續:
(?!.*\.{2})
還有一些修復和優化。 通過對 (a single) 使用負前瞻.
在字符串的開頭,您可以避免重復兩次字符集(因為第一個與第二個相同,只是沒有.
)。
單獨的負字符集可以匹配不在集合中的任何字符 - 例如,在@
之前的[^.]
可以匹配換行符,這肯定是不可取的。 相反,要確保@
之前的最后一個字符不是.
, 使用另一個字符集:
^(?!.*\.{2})(?!\.)[a-z0-9_.'-]*[a-z0-9_'-]@
(在現代環境中,您可以在@
處對.
進行否定回溯,類似於第一種技術,以避免重復類似的字符集,但 JS 回溯尚未在任何地方都得到支持)
也使用不區分大小寫的標志,以避免必須在任何地方使用[a-zA-Z
。 在全:
^(?!.*\.{2})(?!\.)[a-z0-9_.'-]*[a-z0-9_'-]@(?!_)(?:[a-z0-9_'-]+\.)+[a-z0-9_'-]{2,}$
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.