密码检查器 - 检查彼此相邻的2个相同字符

时间:2017-10-11 16:38:36

标签: regex vb.net passwords

我正在执行一个程序来确定vb.net中密码的强度

" STRONG"的特点密码如下:

1)必须至少有8个字符

2)必须是字母,数字和符号的组合

3)必须至少有2个大写字母和

4)不得有2个相同的字符彼此相邻。

实施例: b @ LLp3n = WEAK

P @ ssw0rd = WEAK

k3Yb0Ard! =强

C0MPUT3R =弱

S + @ Rcr4ft = STRONG

问题: 我关心的是检查彼此相邻的2个相同字符的正确代码。

以下是代码:

Public Class Form1
Private Sub btnDisplay_Click(sender As Object, e As EventArgs) Handles btnDisplay.Click
    Dim password As String = txtInput.Text
    Dim numUpper As Integer = 2
    Dim passLength As Integer = 8
    Dim specialLength As Integer = 1


    Dim upper As New Text.RegularExpressions.Regex("[A-Z]")
    Dim specialChar As New Text.RegularExpressions.Regex("[^a-zA-Z0-9]")


    If password.Length < passLength Then
        MessageBox.Show("The Password Is Weak-")
    ElseIf upper.Matches(password).Count < numUpper Then
        MessageBox.Show("The Password Is Weak!")
    ElseIf specialChar.Matches(password).Count < specialLength Then
        MessageBox.Show("The Password Is Weak+")
    Else
        MessageBox.Show("The Password Is Strong")
    End If
End Sub
End Class

我希望有人可以帮我解决这个问题。

1 个答案:

答案 0 :(得分:1)

您可以在方法中添加另一个If条件:

If Regex.IsMatch(password,"(.)\1") Then
    MessageBox.Show("There are identical consecutive chars!")
End If

(.)\1模式将匹配并捕获任何字符,但换行符(带有(.))和{1}}对组1值的反向引用将匹配在组1中捕获的相同字符。请参阅the regex demo

您可以进一步加强这一点。比方说,你允许两个相同的连续字符,但你不想允许3个相同的字符条纹。然后使用\1,这将需要在第1组中捕获2次相同的字符。

相关问题