簡體   English   中英

以任何順序匹配正則表達式

[英]Match regex in any order

我想用正則表達式檢查復雜的密碼。

它應該有1個1號大寫和1個小寫字母,而不是特定的順序。 所以我雖然這樣的事情:

m = re.search(r"([a-z])([A-Z])(\d)", "1Az")
print(m.group())

但我不知道如何告訴他以任何順序搜索。 我試着在網上看,但我找不到有趣的東西,謝謝你的幫助。

您本來可以嘗試尋找密碼驗證正則表達式,該網站有很多;)

也就是說,您可以使用積極的前瞻來做到這一點:

re.search(r"(?=.*[a-z])(?=.*[A-Z])(?=.*\d)", "1Az")

並實際匹配字符串......

re.search(r"(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{3}", "1Az")

現在,要確保密碼長度為3個字符:

re.search(r"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{3}$", "1Az")

正向前瞻(?= ... )可確保內部表達式存在於要測試的字符串中。 因此,字符串必須具有小寫字符( (?=.*[az]) ),大寫字符( (?=.*[AZ]) )和數字( (?=.*\\d) )正則表達式“通過”。

為什么不呢:

if (re.search(r"[a-z]", input) and re.search(r"[A-Z]", input) and re.search(r"[0-9]", input)):
    # pass
else
    # don't pass

暫無
暫無

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

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