簡體   English   中英

與任何特殊字符匹配的強密碼正則表達式

[英]Strong password regular expression that matches any special char

我需要以下檢查以進行強密碼驗證:

  • 至少7個字符
  • 至少1個大寫字符(AZ)
  • 至少1個數字(0-9)
  • 至少有一個特殊的字符

我找到並調整了一個RegEx,就像這樣(對不起,我丟失了參考資料......):

^.*(?=.{7,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@'#.$;%^&+=!""()*,-/:<>?]).*$

它在C#工作,除了我需要匹配任何特殊字符的事實,我的意思是任何 換句話說,我需要一個“特殊字符”是什么,但數量和更低/大寫字母。

編輯:

為了清楚起見,讓我們考慮重音特殊字符,因此在這個問題的上下文中應該將éñ等視為特殊字符。

^.*(?=.{7,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9]).*$

(不是C#代碼)

def validate (value):
    return (value.Length >= 7 &&
            value.IndexOfAny(['0', ..., '9']) >= 0 &&
            value.IndexOfAny(['A', ..., 'Z']) >= 0 &&
            value.IndexOfAny(['@', ..., ')']));

是的我知道這不是問題所在,但我相信它比任何RegExp解決方案更清晰,性能更高,維護更容易。

我相信 :-

\\ W

匹配任何單詞字符。

反過來是: -

\\ W

這是你想要的。

編輯

^.*(?=.{7,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[\W_]).*$

測試你的正則表達式: -

http://www.nregex.com/nregex/default.aspx

看看這里: Unicode正則表達式並選擇一個Unicode類,如\\p{Symbol}\\p{Punctuation}

嘗試這個:

^(?=.{7,})(?=.*?\d)(?=.*?[a-z])(?=.*?[A-Z])(?=.*?[@'#.$;%^&+=!"()*,-/:<>?])

暫無
暫無

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

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