A regular expression (regex) defines a search pattern for strings 이라고 합니다.
즉, 정규식이란 문자열에 대한 검색 패턴을 정의함으로써 다양한 형태의 문자열 입력에 대해서 다양한 경우의 수를 간결하게 처리하기 위해 사용합니다.
이 정규표현식은 다양한 언어에서 범용으로 사용되므로 문법을 익히기만한다면 java, python, javascript 등 유사하게 작성할 수 있습니다.
기호 | 의미 |
---|---|
. | 모든 문자와 일치 |
^ | 문자의 시작을 표현 |
$ | 문자의 끝을 표현 |
ㅣ | 왼쪽이나 오른쪽 문자(또는 패턴)과 일치 |
[] | 문자 집합 구성원과 일치. 만약 [kim] 일 경우 k or i or m |
[^] | 문자 집합 구성원과 제외하고 일치. 만약 [^kim] 일 경우 k, i, m을 제외한 문자들 |
- | 범위 정의 또는 핸드폰 번호 regex의 경우 가운데 '-' 의미 |
a-z | 소문자 a부터 z까지 문자 |
A-Z | 대문자 A부터 Z까지 문자 |
0-9 | 0부터 9까지의 숫자 |
등등 많은 것이 있으며 자세한 것은 여기를 참고하세요.
종류 | 예시 | 의미 |
---|---|---|
이름 | ^[가-힣]{2,4}$ | 2~4자리의 한글만 입력가능 |
나이 | ^[0-9]{1,3}$ | 1~3 자리로 입력 가능 |
닉네임 | ^[가-힣ㄱ-ㅎa-zA-Z0-9._-]{2, 16}$ | 2~16자리내에서 한글, 소문자, 대문자, 언더스코어만 입력가능 |
핸드폰 번호 | ^[0-9]{3}[-]+[0-9]{3,4}[-]+[0-9]{4}$ | ^[0-9]{10,11}$ |
이메일 | ^[a-zA-Z0-9+-_.]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$ | mail11@gmail.com 과 같은 형식으로 @과 .을 반드시 포함한 형태만 입력가능 |
비밀번호 | ^[A-Za-z0-9@#$%^&+=]{8,} | 8~15 자리에 맞춰 대소문자, 숫자, 특수문자 포함가능한 형태로 입력 |
만약 name의 정규표현식을 작성해 예외사항을 걸러낸다고 할 때, 파이썬 내부 모듈을 import 해와서 사용합니다.
import re
from django.views import View
from django.http import JsonResponse
from user.models import # models.py class 이름
class SignUpView(View):
def post(self, request):
data = json.loads(request.body)
# 정규표현식을 객체에 할당
name_regex = "^[가-힣]{2,4}$"
# 만약 name이라는 데이터를 입력받을 때 정규표현식의 규칙을 지키지 않았다면 메세지를 return한다.
if re.search(name_regex, data['name']) == False:
return JsonResponse({"MESSAGE": "2~4 글자의 한글을 입력해 주세요."})
4번의 예시를 버시면 re.search()
함수를 사용한 것을 보실 수 있습니다. re.search
는 특정 문자열이 일치하는 지만 판단하고 만약 패턴이 일치하는 특정 문자열 중 첫번째 문자열을 리턴합니다.
re.match
는 문자열의 앞 부분이 매치되는가를 체크한다.
정규표현식이란? : https://www.vogella.com/tutorials/JavaRegularExpressions/article.html
정규표현식 내부모듈 사용법 : https://docs.python.org/3/library/re.html
휴대폰번호 010 형식으로 정규표현식 작성법 : https://jamesdreaming.tistory.com/197
주민번호 정규 표현식 작성법 : https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=javaking75&logNo=220083169851
url 주소 정규 표현식 : https://cholol.tistory.com/457
Django viewset 작성예시 : https://www.django-rest-framework.org/api-guide/viewsets/