2012-04-05 106 views
2

我在ASP.NET網站上使用ASP.NET Membership屬性進行身份驗證。我希望密碼非常安全。我希望它們是7位數字,包含一個字母,數字和一個特殊字符。ASP.NET密碼強度正則表達式

I found this to be added to the web.config

passwordStrengthRegularExpression=" @\"(?=.{6,})(?=(.*\d){1,})(?=(.*\W){1,})" 

然而,當我加入這個我的會員資料,我得到以下錯誤:

Name cannot begin with the '(' character, hexadecimal value 0x28. Line 26, position 445. 

所以看起來它沒有看到@符號後轉義字符,並試圖使用該報價結束標籤。任何想法我做錯了什麼?

最後,我該如何修改這個也需要小寫字母和大寫字母?

回答

2

嘗試這樣的:

ValidationExpression="(?=^.{7,51}$)([A-Za-z]{1})([[email protected]#$%_\^\&\*\-\.\?]{5,49})$" 

Here你可以找到很多樣品

+0

不相信會的工作,因爲這將對陣'helloth' – Jason 2012-04-05 18:38:52

1

而不是處理沒有人理解的表達的,使用三個(或更多)。有下面是這種想法的一些僞代碼:

abort('to short') if password.length < 8 
abort('at least one letter') if password !~ /[a-z]/i 
abort('at least two digits') if password !~ /[0-9].*[0-9]/ 
abort('at least one special character') if password !~ /[[email protected]#$%^\*-=\+\?]/ 
2

如果你試圖逃離",這是你的web.config文件,你需要做的&quot;,這是XML的合適報價實體。至於你想要的正則表達式,試試這個

^(?=[a-z]+)(?=.*?\d+)(?=.*?[`[email protected]#$%^&*\(\)\-_}{\]\[=+\\|]+).{7,}$ 

將匹配對下列項目中大膽

  • helloth
  • hellot
  • hell0th
  • hell0Th
  • 他!l0th
  • 他!l0Th
  • 他!l0Th3534534
  • 他!l0Thdggfsg

您可以添加(?=.*?[A-Z]+)如果你也想至少需要一個大寫字母,並使其只匹配最後3.最後,你可以從上面的正則表達式修改下面的塊,只包含你想允許的特殊字符。

[`[email protected]#$%^&*\(\)\-_}{\]\[=+\\|] 
0

「由Itrend solutions - 密碼驗證

添加創建方法,並通過文本來驗證密碼強度.. 昏暗的密碼AsString 密碼= TRIM(txtnewpassword。文本)

DimSmallCharacter()AsString = {「a」,「b」,「c」,「d」,「e」,「f」,「g」,「h」,「i」,「j k「」l「」m「」n「」o「」p「」q「」r「」s「」t「」u「」v「 w,x,y,z,A,B,C,D,E,F,G,H,J, K,L,M,N,O,P,Q,R,S,T,U,V, 「W」, 「X」, 「Y」, 「Z」} DimsmallchacountAsInteger = 0 ForEachsmallchaAsStringInSmallCharacter 如果(password.Contains(smallcha))然後 smallchacount = smallchacount + 1 ENDIF 接着 Ifsmallchacount < = 0然後 MessageBox(「密碼必須包含一個字母字符」) Exit Sub ENDIF

昏暗號碼()AsString = { 「0」, 「1」, 「2」, 「3」, 「4」, 「5」, 「6」, 「7」, 「8」,「 9 「} DimnumbercountAsInteger = 0 ForEachnumAsStringIn編號 如果(password.Contains(NUM))然後 numbercount = numbercount + 1 ENDIF 接着 Ifnumbercount < = 0然後 的MessageBox(」 密碼必須包含一個數字位「) 退出小組 ENDIF

DimSpecial()AsString = { 「@」, 「#」, 「$」, 「%」, 「^」, 「&」, 「*」, 「(」, 「)」, 「!」} DimcountSpecialAsInteger = 0 的ForEach規範AsStringIn特別 如果(password.Contains(SPEC))然後 countSpecial = countSpecial + 1 ENDIF 接下來 IfcountSpecial < = 0,則 的MessageBox(「密碼必須包含一個特殊字符「) 退出小組

更多的澄清,請contact us

+0

雅其做工精細,以驗證在VB中的密碼強度。淨 – 2013-07-19 13:57:37