簡體   English   中英

檢查輸入python正則表達式的有效性

[英]check validity of an input python regex

我想使用 username@websitename.extension 格式檢查輸入,並具有以下屬性:

  • 用戶名只能包含數字、字母和 -,_
  • 網站名稱應僅包含數字和字母
  • 擴展的長度最多為 3

我的以下代碼無法正常工作。 你能幫我解決這個問題嗎?

def is_email_valid(email):
  rex = re.compile("[a-zA-Z0-9_-]+@[a-z]+\\.{3}")
  return rex.match(email)

表達式\\.{3}匹配三個文字點。 大概你想要\\.[az]{3}$

對於主機名部分, [az]顯然不包含數字; 試試[a-z0-9]

在您立即丟棄的正則表達式上進行compile沒有特別的好處。

def is_email_valid(email):
  return re.match(r"[a-zA-Z0-9_-]+@[a-z0-9]+\.[a-z]{3}$", email)

如果你想接受子域(你可能應該),你可以在@ ,在[az]{3}$之前添加一個重復,比如([a-z0-9]+\\.)+

對於許多有效的電子郵件地址,您的標准過於嚴格,並且會接受許多無效的電子郵件地址。 一般來說,使用正則表達式來驗證電子郵件地址是一個有缺陷的想法,尤其是當您的有效性標准完全是臨時的時。

無論如何,這會以不同的原因拒絕我的首選、我的備份和我的第三級電子郵件地址。

暫無
暫無

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

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