-
Email Validation (이메일 유효성 검사 - 정규표현식 활용)Django 2021. 12. 19. 23:51
회원가입 view를 만들려고 합니다.
정규표현식에 대해서 다 알고 넘어가는 것이 제일 좋은 방법이겠지만
필요한 부분에 대해 그때그때 학습하는 것이 좋겠다는 생각에 제가 사용한 정규표현식에 대해 글을 써보고자 합니다.이번 글에서는 정규표현식을 활용한 이메일 유효성 검사에 대해 중점적으로 다루고자 합니다.
제가 정의한 회원가입에 적합한 이메일의 형식은 아래와 같습니다.
1. 알파벳 대/소문자로 시작할 것
- 아래의 1번에 해당
2. @ 이전 부분에는 특수문자가 들어갈 수 있으나 특수문자로 마무리하지 말 것
- 아래의 2번에 해당
3. @ 와 . 이 포함되었는가 (@ 이후에 최소 한개 이상의 . 이 포함될 것)
- 아래의 3 ~ 7번에 해당
class SignUpView(View): def post(self, request): data = json.loads(request.body) def validate_email(email=data['email']): email_regex = re.compile(r"^[a-zA-Z]+[!#$%&'*+-/=?^_`(){|}~]*[a-zA-Z0-9]*@[\w]+\.[a-zA-Z0-9-]+[.]*[a-zA-Z0-9]+$") email_validation = email_regex.match(email) if email_validation: # print(email_validation) return True else: # print(email_validation) return False
- 함수 이름은 동사를 사용하려고 했으며 이메일 유효성을 검사하는 것이기에 validate_email 이라고 했습니다.
1. ^[a-zA-Z]+
- ^[] : 다음의 문자열로 시작함을 의미합니다.
- a-zA-Z : 알파벳 대소문자를 의미합니다.
- + : 앞 패턴이 하나 이상이어야 함을 의미합니다.
2. [!#$%&'*+-/=?^_`(){|}~]*
- [!#$%&'*+-/=?^_`(){|}~] : 특수문자가 올 수 있다는 것을 의미합니다. (더 필요하신 특수문자가 있다면 여기에 추가해주시면 됩니다.
- * : 앞 패턴이 0개 이상이어야 함을 의미합니다.
3. [a-zA-Z0-9]*@
- [a-zA-Z0-9]* : 알파벳 대소문자와 숫자가 들어있는 문자열의 패턴이 0개 이상이어야 함을 의미합니다.
- @ : @가 해당 자리에 있어야 함을 의미합니다.
4. [\w]+\.
- [\w]+ : \w 는 [a-zA-Z0-9_] 와 같으며 한 개 이상의 패턴이 있어야 함을 의미합니다. (알파벳 대소문자, 숫자, 밑줄문자(Underscore))
- \. : .(dot)을 의미합니다.
5. [a-zA-Z0-9-]+
- [a-zA-Z0-9-]+ : 알파벳 대소문자와 숫자, - 문자의 패턴이 1개 이상이어야 함을 의미합니다.
6. [.]*
- [.]* : .의 패턴이 0개 이상이어야 함을 의미합니다.
7. [a-zA-Z0-9]+$
- [a-zA-Z0-9]+ : 알파벳 대소문자와 숫자의 패턴이 1개 이상이어야 함을 의미합니다.
- $ : 앞의 패턴으로 끝나야 함을 의미합니다.
@ 이후 부분에 알파벳 문자나 숫자가 아닌 .(점)으로 끝나서 INVALID_EMAIL 이라는 메세지를 보여주고 있습니다. 조건에 맞게 입력하니 데이터가 잘 저장되었다는 SUCCESS 메세지를 보여주고 있습니다. 정규표현식에 대해 보기 좋게 잘 정리한 사이트가 있어 공유하고자 합니다.
https://yganalyst.github.io/data_handling/memo_6/
[Python] re모듈, 정규표현식(regular expression)
re모듈을 이용해, 정규표현식을 만들고 문자열을 식별하는 방법을 알아보자
yganalyst.github.io
https://velog.io/@fall031/%EC%A0%95%EA%B7%9C%ED%91%9C%ED%98%84%EC%8B%9D
TIL 29. 정규표현식(e-mail, password 유효성)
정규 표현식 (Regular Expression) 정규 표현식은 특정한 규칙을 가진 문자열의 패턴을 표현하는데 사용하는 표현식(Expression)으로 텍스트에서 특정 문자열을 검색하거나 치환할 때 흔히 사용된다. 예
velog.io
그리고 아래의 부분에 대해 공부한 후 추가하도록 하겠습니다!
1. 이메일이 공란일 경우 처리 방법
2. re.match 와 re.search 는 어떤 차이점을 가지고 있으며 어떤 상황에 사용하면 적합할지 조사 및 테스트
'Django' 카테고리의 다른 글
TypeError : Field 'id' expected a number but got <User : User object (1)> (0) 2022.01.05 Django 테이블 이름 변경 및 삭제 후 마이그레이션시 에러 (0) 2021.12.28 Login의 View 작성시 피해야 할 코드 작성법 (0) 2021.12.23 Foreign Key - CASCADE (0) 2021.12.16 CLI를 통해 FK로 연결된 하위 테이블 데이터 입력하는 방법 (0) 2021.12.12