簡體   English   中英

正則表達式不允許電子郵件中的點位於錯誤的位置

[英]Regex to don't allow dots in email at wrong position

我必須驗證來自公司的電子郵件。 正則表達式應該驗證它是否來自公司並且可能來自約翰。

我的正則表達式現在看起來像這樣:

/[a-z0-9.]*(john)[a-z0-9.]*@mycompany\\.com/

唯一的問題是,它允許點放在錯誤的位置。 我認為此電子郵件有效:

john@mycompany.com smith.john@mycompany.com john.smith@mycompany.com

但我不應該認為這些有效:

john.@mycompany.com .john@mycompany.com

/^([a-z0-9][a-z0-9.]*)?(john)([a-z0-9.]*[a-z0-9])?@mycompany\\.com$/

這應該確保(john)之前/之后的字符不以/開頭/結束. 分別。

替代解決方案

^(?!\\.)[a-z0-9.]*(john)(?:[a-z0-9]|\\.(?!@))*@mycompany\\.com$

請試試

\w+(john)?\.?\w+?@mycompany\.com

這個匹配

john@mycompany.com
smith.john@mycompany.com
john.smith@mycompany.com

但不是

john.@mycompany.com
.john@mycompany.com

在最后一種情況下,它實際上僅捕獲點后的部分

john@mycompany.com

當我寫下答案時,您已經得到了很多答案。 :-)好吧,這是您可以測試的其他內容。

^([[:alnum:]]+\.)?john(\.[[:alnum:]]+)?@mycompany\.com

我在regex101.com上測試

如果我在約翰前后都理解的話,應該用點點隔開.

暫無
暫無

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

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