정규 표현식은 특정한 규칙을 가진 문자열의 패턴을 표현하는데 사용하는 표현식(Expression)으로 텍스트에서 특정 문자열을 검색하거나 치환할 때 흔히 사용됩니다. 예를 들어, 웹페이지에서 전화번호나 이메일 주소를 발췌한다거나 로그파일에서 특정 에러메시지가 들어간 라인들을 찾을 때 정규 표현식을 사용하면 쉽게 구현할 수 있습니다. 정규 표현식은 간단히 정규식, Regex 등으로 불리기도 합니다.
-. ^: 패턴의 시작을 의미
-. $: 패턴의 종료를 의미
-. a-zA-Z0-9(a~z, A~Z, 0~9. 즉 알파벳(대소문자)+숫자를 의미)
휴대폰 번호 유효성 검사 정규표현식
'\d{3}-\d{3,4}-\d{4}'
'3자리 숫자 - 3자리 or 4자리 숫자 - 4자리 숫자' 형태의 데이터를 찾는 정규표현식
비밀번호 유효성 검사 정규표현식
최소 8 자, 최소 하나의 문자, 하나의 숫자 및 하나의 특수 문자 :
"^(?=.*[A-Za-z])(?=.*\d)(?=.*[!%*#?&])[A-Za-z\d!%*#?&]{8,}$"
먼저 정규표현식을 지원하는 모듈 re를 import합니다.
import re
a = re.compile('^[a-zA-Z0-9+-\_.]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$')
#유효성 검사
b = a.match('abc@gmail.com')
c = a.match('xyzxzyxzy')
print(b)
-> <re.Match object; span=(0, 13), match='abc@gmail.com'>
print(c)
-> None #유효성 검사를 통과하지 못하면 None을 반환한다.
아래는 정규표현식 유효성 검사를 활용하여 작성한 코드 일부입니다.
data = json.loads(request.body)
email = data["email"]
password = data["password"]
email_validation = re.compile("^[a-zA-Z0-9+-_.]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$")
password_validation = re.compile("^.*(?=^.{8,}$)(?=.*\d)(?=.*[a-zA-Z])(?=.*[!@#$%*^&+=]).*$")
if email == "" or password == "":
return JsonResponse({"message":"KEY_ERROR"}, status=400)
if not email_validation.match(email):
return JsonResponse({"message":"EMAIL_VALIDATION_ERROR"}, status=400)
if not password_validation.match(password):
return JsonResponse({"message":"PASSWORD_VALIDATION_ERROR"}, status=400)