It’s needed to enter password which requires a character, a number and a symbol at least, respectively. I’d like to describe how to validate password with VBScript®. It’s assumed that the length of password is 8 or greater.
In 23 line, the constraint is shown. In 22 line with comment, it’s shown that constrains password to require both a single-byte character and number at least and 8 or greater character length.
Option Explicit Private Sub CommandButton1_Click() With TextBox1 If Not CheckPassword(.Text) Then .SetFocus .SelStart = 0 .SelLength = Len(.Text) Exit Sub Else End If End With Unload Me End Sub Function CheckPassword(InputString As String) As Boolean Dim myReg As Object CheckPassword = False Set myReg = CreateObject("VBScript.RegExp") With myReg '.Pattern = "(?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{8,})$" .Pattern = "(?!^[0-9]*$)(?!^[a-zA-Z]*$)(?!^[!-/:-@[-`{-~]*$)(?!^[a-zA-Z0-9]*$)(?!^[!-@[-`{-~]*$)(?!^[!-/:-~]*$)^([!-~]{8,})$" .IgnoreCase = False .Global = True End With If myReg.Test(InputString) Then CheckPassword = True End If Set myReg = Nothing End Function Private Sub UserForm_Initialize() With TextBox1 .IMEMode = fmIMEModeDisable .PasswordChar = "*" End With End Sub
You might need description here. The pattern (?!pattern) means such negative lookahead as EXCEPT operator effects in SQL. To seek area three circles overlap, it’s needed to remove areas around. After filtering out not required patterns with negative lookahead, it validates length of the password. The number of required pattern, which verifies n types of letter, is 2n – 2.
Not Needed | Negative Lookahead Pattern |
Number | (?!^[0-9]*$) |
Character | (?!^[a-zA-Z]*$) |
Symbol | (?!^[!-/:-@[-`{-~]*$) |
Character and number | (?!^[a-zA-Z0-9]*$) |
Number and symbol | (?!^[!-@[-`{-~]*$) |
Character and symbol | (?!^[!-/:-~]*$) |
References:
Regular Expression Language – Quick Reference
How To: Use Regular Expressions to Constrain Input in ASP.NET
ASCII character code list (0-127)
Userform of Excel VBA as user interface