오늘도 개발

이메일과 비밀번호 예시로 보는 정규식(Regex) 본문

웹 프로그래밍/Python3

이메일과 비밀번호 예시로 보는 정규식(Regex)

Sueeeeeee 2022. 7. 9. 13:52

이메일 정규식

^는 문자열의 시작, $는 문자열의 끝

[]는 매치될 수 있는 문자의 목록

a-z는 소문자 전체, A-Z는 대문자 전체, 0-9는 숫자 전체

+는 + 앞의 문자가 1번이상 반복되어야 매치

\.은 .을 나타냄

 

아래 정규표현식은 소문자 전체, 대문자 전체, 숫자 전체, +기호, -기호, _기호, .중 하나가 한 번이상 반복되는지 확인한다.

[a-zA-Z0-9+-_.]+

 

이를 이메일 주소를 검증할 수 있게 조립하면 다음과 같다.

 

import re

regex_email = '^[a-zA-Z0-9+-_.]+@[0a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$'
print(re.match(regex_email, 'sue@email.com'))
# 매치하면 오브젝트 반환 <re.Match object; span=(0, 13), match='sue@email.com'>
# 매치하지 않으면 None 반환

출처 - regexper

비밀번호 정규식

(?=)는 전방 탐색

.는 모든 문자

*는 * 앞의 문자가 0번이상 반복되면 매치

[A-Za-z]는 대소문자 전체 매치

 

\d는 숫자인 것 모두 매치

 

{8, }은 문자열 길이가 최소 8이라야 매치

import re

# 최소 하나의 문자, 하나의 숫자, 하나의 특수문자, 최소 8글자 이상
regex_password = '^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@!%*#?&])[A-Za-z\d$@$!%*#?&]{8,}$'
print(re.match(regex_password, 'abc123!@'))

출처 - regexper

 

참고

regexper - 정규식을 입력하면 도식화해서 보여줌

정규표현식(Regex) 정리