알고리즘

비밀번호 설정/ re모듈 사용/ 정규표현

삶은겨란 2022. 10. 22. 20:01

정규 표현 사용을 위해 re 모듈을 사용한다.

 

- match(패턴, 문자열, 플래그)

문자열의 앞 부분 패턴이 일치하는지 확인

 

 

- search(패턴, 문자열, 플래그)

문자열의 패턴이 일치하는지 확인

 

- findall()

패턴과 일치하는 부분 리스트로 저장. 길이를 알 수 있음

 

 

메타문자 종류

문자 의미
| or
^ 문자열의 맨 처음과 일치함
$ 문자열의 마지막과 일치함
[] 안에 있는 문자와 매치
. 어떤 문자든 매치(줄바꿈 제외)
* *왼쪽의 문자가 0번이상 반복되면 매치
+ *왼쪽의 문자가 1번이상 반복되면 매치
{} 반복 횟수 지정
a{2} a가 2번 반복, a{1,3} a가 1~3번 반복 
? ?왼쪽의 문자가 있어도 없어도 매치

 

비밀번호 유효성 검사

import sys
import re
input=sys.stdin.readline

def password(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
s=input()
if password(s) ==False:
    print('비밀번호 양식에 맞춰 다시 입력')

 

 

이메일 양식 검사

import sys
import re
input=sys.stdin.readline


email=input()
if re.search('^[a-zA-Z0-9]+@[a-zA-Z0-9]+\.[a-z]+$',email) is None:
    print('잘못된 비밀번호 양식')
else:
    print('입력 완료')

 

전화번호 검사

import sys
import re
input=sys.stdin.readline


phone=input()
# 11자리 숫자인지 확인
if re.search('[0-9]{11}',phone) is None: 
    print('잘못된 전화번호 양식')
else:
    print('입력 완료')

# 000-0000-0000
if re.search('^[0-9]{3}-[0-9]{4}-[0-9]{4}$',phone) is None: 
    print('잘못된 전화번호 양식')
else:
    print('입력 완료')