goodthings4me.tistory.com
■ re.findall() 이용
import re
def passwordCheck(pwd):
if len(pwd) < 8 or len(pwd) > 21 and not re.findall('[0-9]+', pwd) and not \
re.findall('[a-z]', pwd) or not re.findall('[A-Z]', pwd):
print('비밀번호 기준(숫자, 영문 대소문자 구성)에 맞지 않습니다.')
return False
elif not re.findall('[`~!@#$%^&*(),<.>/?]+', pwd):
#elif re.search('[`~!@#$%^&*(),<.>/?]+', pwd) is None: # 이 방법도 있음
print('비밀번호는 최소 1개 이상의 특수문자가 포함되어야 함')
return False
print('비밀번호의 길이, 숫자, 영문자 등 유효함!!')
return True
pwd = '112345678qQ!'
passwordCheck(pwd)
[실행 결과]
비밀번호의 길이, 숫자, 영문자 등 유효함!!
※ findall()은 정규식과 매칭되는 문자열을 리스트로 반환한다.
※ search()는 문자열 전체를 검색하여 정규식과 매칭되는지 검사한다.
■ re.search() 이용
import re
def passwordValidation(pwd):
if len(pwd) < 8:
print('비밀번호는 최소 8자 이상이어야 함')
return False
elif re.search('[0-9]+', pwd) is None:
print('비밀번호는 최소 1개 이상의 숫자가 포함되어야 함')
return False
elif re.search('[a-zA-Z]+', pwd) is None:
print('비밀번호는 최소 1개 이상의 영문 대소문자가 포함되어야 함')
return False
elif re.search('[`~!@#$%^&*(),<.>/?]+', pwd) is None:
print('비밀번호는 최소 1개 이상의 특수문자가 포함되어야 함')
return False
else:
print('비밀번호 기준에 적합합니다.')
return True
passwd = 'a123456789#'
passwordValidation(passwd)
[실행 결과]
비밀번호 기준에 적합합니다.
■ 특수문자를 리스트 객체로 생성한 후 체크하도록 하는 방법
import re
def pwdValidation(pwd):
special_char = ['`', '~', '!', '@', '#', '$', '%', '^', '&', '*', '(',\
')', ',', '<', '.', '>', '/', '?', '[', ']', '{', '}']
if len(pwd) < 8:
print('비밀번호는 최소 8자 이상이어야 함')
return False
elif re.search('[0-9]+', pwd) is None:
print('비밀번호는 최소 1개 이상의 숫자가 포함되어야 함')
return False
elif re.search('[a-z]+', pwd) is None or re.search('[A-Z]+', pwd) is None:
print('비밀번호는 최소 1개 이상의 영문 대소문자가 포함되어야 함')
return False
elif not any(c in special_char for c in pwd):
print('비밀번호는 최소 1개 이상의 특수문자가 포함되어야 함')
return False
else:
print('비밀번호 기준에 적합합니다.')
return True
password = '12345678aQ'
pwdValidation(password)
[실행 결과]
비밀번호는 최소 1개 이상의 특수문자가 포함되어야 함
※ not any(c in special_char for c in pwd)
# any()는 iterable 객체를 인수로 받고, 인수 중 하나라도 참이 있으면 True 반환(인수 모두 거짓일 때에만 False 반환)
# all()은 iterable 객체를 인수로 받고, 인수가 모두 참이면 True 반환, 거짓이 하나라도 있으면 False 반환
print(all([1, 2, 3, 0])) # False
print(any([1, 2, 3, 0])) # True
'코딩 연습 > 코딩배우기' 카테고리의 다른 글
[python] 파이썬 정규 표현식 (regular expression) (0) | 2020.09.27 |
---|---|
[python] 파이썬 문자열 관련 함수들 (0) | 2020.09.27 |
[python] 파이썬 datetime() 함수로 살아온 연월일 계산하기(코딩 연습) (0) | 2020.09.23 |
[django] 파이썬 Django(장고) 템플릿 문법 (0) | 2020.09.22 |
[python] 파이썬 스페셜 메소드 (Special Method) 사용 예제 (0) | 2020.09.22 |
댓글