[英]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.