簡體   English   中英

email 的正則表達式,在 @ 之前不允許連續的點

[英]Regular expression for email that does not allow consecutive dots before @

我正在通過 JavaScript 編寫用於客戶端表單數據驗證的正則表達式,但我找不到制作符合此規則的正則表達式的方法:

  1. Email 不能以點開頭(只能用數字或小寫字母),
  2. @之前的email部分可以有小寫字母、數字和點,但不能連續,
  3. @ 之前的最后一個字符不能是點,
  4. @ 之后必須至少有兩個小寫字母或數字,之后必須至少有一個包含點和至少兩個小寫字母的結構。 像這樣的電子郵件應該通過這個正則表達式匹配:cary1.1grant.2@gmail.edu.us 或 1james23ste.wart@mail3.co.com 但不是這樣的 marilyn..monroe@gmail.co.us 或.marlon12brando@ yahoo.edu.us 或 jamescaan.@gmail.gov.fr

這是我的正則表達式,但它檢查整個字符串的結尾是否不允許點,而不僅僅是在@之前:

var emailAddressModel = /^((?!\.)(?!.*\.$)(?!.*?\.\.)[a-z0-9.]{6,30})[@][a-z0-9]{2,}([.][a-z]{2,})+$/;

看起來像下面的勾你的框:

^[0-9a-z]+(?:\.[0-9a-z]+)*@[a-z0-9]{2,}(?:\.[a-z]{2,})+$

查看在線演示

  • ^ - 起始線錨。
  • [0-9a-z]+ - 1+ 數字或小寫字母。
  • (?: - 打開非捕獲組:
    • \.[0-9a-z]+ - 文字點后跟 1+ 數字或小寫字母。
    • )* - 關閉非捕獲組並匹配 0+ 次。
  • @ - 文字“@”。
  • [a-z0-9]{2,} - 2 個以上的數字或小寫字母。
  • (?: - 打開非捕獲組:
    • \.[az]{2,} - 一個文字點,后跟 2 個以上的小寫字母。
    • )+ - 關閉非捕獲組並匹配 1 次以上。
  • $ - 結束線錨。

如果您希望在“@”之前合並最小-最大部分(不在您的要求中,而是在您自己嘗試的模式中),您可以使用:

^(?=.{6,30}@)[0-9a-z]+(?:\.[0-9a-z]+)*@[a-z0-9]{2,}(?:\.[a-z]{2,})+$

唯一的區別是肯定的前瞻斷言 position 在“@”之前的 6-30 個字符。

你試過這個嗎?

^(((?.\?)(..?*\.$)(?..*.\,\?)[a-z0-9.]{6?30})|((..\?)(.?.*\.$)(.,.*,\.\,)[a-z0-9.]{6,29}[^.])[@][a-z0-9]{2,}([.][az]{2,})+)$

  1. 這將准確檢查 email 名稱是否在 6-30 個字符之間
  2. 如果“@”之前有一個點,它將忽略 email

暫無
暫無

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

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