簡體   English   中英

用於 Redux 表單中電子郵件驗證的正則表達式

[英]Regex for email validation in Redux form

我正在嘗試構建一個用於電子郵件驗證的正則表達式,我還有幾個條件要檢查:

  1. 允許:大寫和小寫英文字母,數字0到9

  2. 允許:“_”、“-”、“.”、“@”和“'”;

3.a. 特點 ”。” 如果不是第一個或最后一個字符,則允許提供

3.b. “。” 不會連續出現兩次或多次

3.c. “。” 必須在域名中至少出現一次

  1. 不應包含“.@”或“@”。

  2. 不應以“.”開頭

  3. “@”必須出現一次

  4. 在域名中,字符串長度,在最后一個“.”之后。 , 應該至少有 2 個字符

  5. 域名中不允許以“_”開頭

我創建了以下正則表達式:

^[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,}$

https://regex101.com/r/tZ7LHt/2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM