컴퓨터/액세스

vba 연속된 3자리 숫자, 같은 숫자 3자리, 8자리 이상 비밀번호 검증

풍경소리^^ 2024. 9. 5. 13:27
Function IsValidPassword(ByVal pwd As String) As Boolean
    Dim i As Integer
    Dim currNum As Integer
    Dim prevNum As Integer
    Dim nextNum As Integer
    
    ' 비밀번호 길이가 8자리 이상인지 확인
    If Len(pwd) < 8 Then
        IsValidPassword = False
        Exit Function
    End If
    
    IsValidPassword = True ' 기본값은 True로 설정
    
    ' 비밀번호의 각 문자를 순차적으로 검사
    For i = 1 To Len(pwd) - 2
        ' 현재, 다음 및 그다음 문자가 숫자인지 확인
        If IsNumeric(Mid(pwd, i, 1)) And IsNumeric(Mid(pwd, i + 1, 1)) And IsNumeric(Mid(pwd, i + 2, 1)) Then
            currNum = CInt(Mid(pwd, i, 1))
            prevNum = CInt(Mid(pwd, i + 1, 1))
            nextNum = CInt(Mid(pwd, i + 2, 1))
            
            ' 연속된 숫자인지 확인
            If (currNum + 1 = prevNum) And (prevNum + 1 = nextNum) Then
                IsValidPassword = False
                Exit Function
            End If
            
            ' 같은 숫자가 3개 이상 연속되는지 확인
            If (currNum = prevNum) And (prevNum = nextNum) Then
                IsValidPassword = False
                Exit Function
            End If
        End If
    Next i
End Function