[TIPS] Python, Javascript 프로젝트에서 유용한 regex 문법 및 관련 패키지 모음집


사용자의 입력값이 유효한지 확인하는 작업을 해야할 때가 있는데, 이 때 사용하면 유용한 패키지와 각종 regex를 정리해봤습니다.

(상시 업데이트 예정)

Python3



- Email Validation

  • RFC-5322 표준 기준

    import re
    
    
    EMAIL_REGEX = r"((?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\]))g"
    
    return re.fullmatch(EMAIL_REGEX, email)     # True or False
    

- Name Validation

  • letter(a-z, A-Z), apostrophe, hyphen 지원
  • 여기서는 최소 길이 1 및 최대 길이 20인 문자열만 유효한 것으로 판단
    import re
    
    
    NAME_REGEX = r"(^[aA-zZ '-]{1,20})"
    
    return re.fullmatch(NAME_REGEX, name)       # True or False
    




Javascript


  • yup: 주로 formik과 합쳐서 사용한다

- Email Validation

  • RFC-5322 표준 기준
    const EMAIL_REGEX = /^[-a-z0-9!#$%&'*+/=?^_`{|}~]+(\.[-a-z0-9!#$%&'*+/=?^_`{|}~]+)*@([a-z0-9_][-a-z0-9_]*(\.[-a-z0-9_]+)*\.(aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|mobi|[a-z][a-z])|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,5})?$/i;
    const ex1 = "I can do it";
    const ex2 = "my.email@address.com";
    
    console.log(ex1.match(EMAIL_REGEX))    // false
    console.log(ex2.match(EMAIL_REGEX))    // true
    

Author: Ruby Kim
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint policy. If reproduced, please indicate source Ruby Kim !
Comments
  TOC