파이썬, 비밀번호가 문자/숫자/특수문자 조합이고 8자리 이상 검증
[ main.py]
# 비밀번호 검증 함수
# 비밀번호가 문자, 숫자, 특수문자 조합이고 8자리 이상인지 검증
import re
# 정규식 이용
def validate_password(password):
"""
비밀번호가 문자, 숫자, 특수문자 조합으로 8자리 이상인지 검증합니다.
Args:
password: 검증할 비밀번호 문자열
Returns:
True: 유효한 비밀번호
False: 유효하지 않은 비밀번호
"""
regex = "^(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[!@#$%^&*])[a-zA-Z0-9!@#$%^&*]{8,}$"
return bool(re.fullmatch(regex, password))
# 문자별 확인 방식
def validate_password_char_check(password):
"""
비밀번호가 문자, 숫자, 특수문자 조합으로 8자리 이상인지 문자 체크 방식으로 검증합니다.
Args:
password: 검증할 비밀번호 문자열
Returns:
True: 유효한 비밀번호
False: 유효하지 않은 비밀번호
"""
if len(password) < 8:
return False
has_letter = False
has_digit = False
has_special = False
special_chars = "!@#$%^&*"
for char in password:
if 'a' <= char <= 'z' or 'A' <= char <= 'Z':
has_letter = True
elif '0' <= char <= '9':
has_digit = True
elif char in special_chars:
has_special = True
return has_letter and has_digit and has_special
# 테스트
print(validate_password_char_check("Password123!")) # True
print(validate_password("Password123!")) # True
print(validate_password_char_check("Pass123")) # False (특수문자 없음)
print(validate_password("Pass123")) # False (특수문자 없음)
print(validate_password_char_check("Password!")) # False (숫자 없음)
print(validate_password("Password!")) # False (숫자 없음)
print(validate_password_char_check("123456!")) # False (문자 없음)
print(validate_password("123456!")) # False (문자 없음)
print(validate_password_char_check("short")) # False (8자리 미만)
print(validate_password("short")) # False (8자리 미만)
[실행 결과]
True
True
False
False
False
False
False
False
False
False
반응형
'Python 기초' 카테고리의 다른 글
파이썬, 유용한 다섯 가지 데코레이터 (0) | 2025.01.20 |
---|---|
파이썬, f 문자열 기초와 활용 예제 (0) | 2025.01.18 |
파이썬, 디버깅 print는 ic를 이용하면 좋아요. (0) | 2024.12.20 |
파이썬, 연속된 숫자 ID 생성 함수 예제 (0) | 2024.12.17 |
AttributeError: module 'bcrypt' has no attribute '__about__' (0) | 2024.12.12 |