본문 바로가기
FrontEnd/Java Script

[REGEX] 저장했던거 설명해드릴게요 자바스크립트 정규식

by Fathory 2024. 9. 6.

직전에 쓴 글을 확장해보겠습니다.

2024.09.06 - [FrontEnd/Java Script] - [REGEX] 저장해두고 사용하세요 자바스크립트 정규식

 

[REGEX] 저장해두고 사용하세요 자바스크립트 정규식

실속있게 내용만 접수 1. 생년월일/^[0-9]{2}\.(0[1-9]|1[0-2])\.(0[1-9]|[12][0-9]|3[01])$/2. 이메일/^[\w-.]+@([\w-]+\.)+[\w-]{2,4}$/3. 전화번호/^01([016789])-?([0-9]{3,4})-?([0-9]{4})$/4. 아이디/^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$/5

fathory.tistory.com

이전 글에서 소개했던 자주 쓰는 정규식을 자세하게 뜯어보겠습니다.

1. YY.MM.DD 형식의 생년월일 포맷

/^[0-9]{2}\.(0[1-9]|1[0-2])\.(0[1-9]|[12][0-9]|3[01])$/

  • ^[0-9]{2}: 두 자리 숫자로 시작하며, 연도(YY) 뒤2자리를 나타냅니다.
  • \.: 점(.)이 날짜 구분 기호로 사용됩니다.
  • (0[1-9]|1[0-2]): 월(Month)을 나타내며, 01부터 12까지의 숫자를 허용합니다.
    • 0[1-9]: 01부터 09까지
    • 1[0-2]: 10부터 12까지
  • \.: 두 번째 점(.)도 구분 기호로 사용됩니다.
  • (0[1-9]|[12][0-9]|3[01]): 일(Day)을 나타냅니다.
    • 0[1-9]: 01부터 09까지
    • [12][0-9]: 10부터 29까지
    • 3[01]: 30, 31일을 허용
  • $: 문자열의 끝을 나타내며, 입력 값이 이 패턴과 정확히 일치해야 함을 보장합니다.
  • 연도를 4자리로 하고싶으면 [0-9]{4}로 표현할 수 있습니다
  • 앞 두자리가 19또는 20으로 표현할 수 있도록 제한할 수도 있습니다. (19|20)[0-9]{2} 이렇게요
  •  

 

2. 이메일 주소 정규표현식

/^[\w-.]+@([\w-]+\.)+[\w-]{2,4}$/

  • ^[\w-.]+: 알파벳, 숫자, 밑줄(_), 하이픈(-), 점(.)을 포함한 문자 그룹으로, 최소 하나 이상의 문자.
  • @: 이메일의 필수적인 '@' 문자.
  • ([\w-]+\.)+: 도메인 부분으로, 알파벳, 숫자, 밑줄, 하이픈을 포함한 문자 그룹과 점(.)으로 이어지며, 도메인이 여러 레벨일 수 있음.
  • [\w-]{2,4}$: 최종 도메인의 길이가 2에서 4글자 사이여야 함 (예: .com, .net).

 

3. 한국의 전화번호 정규표현식

 /^01([016789])-?([0-9]{3,4})-?([0-9]{4})$/

  • ^01([016789]): 전화번호는 01로 시작하고, 그 뒤에 0, 1, 6, 7, 8, 9 중 하나가 와야 합니다.
  • -?: 하이픈(-)이 있을 수도 있고, 없을 수도 있습니다.
  • ([0-9]{3,4}): 두 번째 부분은 숫자 3자리 또는 4자리로 구성됩니다.
  • -?: 다시 하이픈이 있을 수도, 없을 수도 있습니다.
  • ([0-9]{4})$: 마지막 부분은 숫자 4자리로 끝납니다.

4. 아이디 제한 정규표현식

 /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$/

  • ^: 문자열의 시작.
  • (?=.*[A-Za-z]): 문자열에 최소 하나 이상의 영문자가 포함되어 있어야 합니다.
  • (?=.*\d): 최소 하나 이상의 숫자가 포함되어 있어야 합니다.
  • [A-Za-z\d]{8,}: 영문자와 숫자가 8자 이상이어야 합니다.
  • $: 문자열의 끝.
  • 여기에서 조금 확장한다면, 대문자를 허용하지 않을 수도 있고, 특수문자를 받도록 하여 비밀번호 검증 식으로 사용할 수도 있습니다.

5. 카드번호 정규표현식

 /^(?:4\d{3}[- ]?\d{4}[- ]?\d{4}[- ]?\d{4}|5[1-5]\d{2}[- ]?\d{4}[- ]?\d{4}[- ]?\d{4}|2(?:2[2-9]\d|[3-6]\d{2}|7(?:[01]\d|20))[- ]?\d{3}[- ]?\d{3}[- ]?\d{4}|3[47]\d{2}[- ]?\d{6}[- ]?\d{5}[- ]?\d{5}|62\d{2}[- ]?\d{4}[- ]?\d{4}[- ]?\d{4}|\d{4}[- ]?\d{6}[- ]?\d{5}|35\d{2}[- ]?\d{4}[- ]?\d{4}[- ]?\d{4}|\d{12}(?:\d{3})?)$/

  • ^: 문자열의 시작.
  • 4\d{3}[- ]?\d{4}[- ]?\d{4}[- ]?\d{4}: 비자(Visa) 카드 번호 (4로 시작, 16자리 숫자).
  • 5[1-5]\d{2}[- ]?\d{4}[- ]?\d{4}[- ]?\d{4}: 마스터카드(MasterCard) 번호 (51~55로 시작, 16자리 숫자).
  • 2(?:2[2-9]\d|[3-6]\d{2}|7(?:[01]\d|20))[- ]?\d{3}[- ]?\d{3}[- ]?\d{4}: 마스터카드 번호의 또 다른 패턴 (2221~2720 구간).
  • 3[47]\d{2}[- ]?\d{6}[- ]?\d{5}: 아메리칸 익스프레스(American Express) 카드 번호 (34 또는 37로 시작, 15자리 숫자).
  • 62\d{2}[- ]?\d{4}[- ]?\d{4}[- ]?\d{4}: 중국의 유니온페이(UnionPay) 카드 번호.
  • 35\d{2}[- ]?\d{4}[- ]?\d{4}[- ]?\d{4}: JCB 카드 번호 (35로 시작, 16자리 숫자).
  • \d{12}(?:\d{3})?: 기타 카드 번호, 12자리 또는 15자리 숫자.
  • $: 문자열의 끝.
  • 아무번호나 넣었을때 다 인증되지 않고, 번호 패턴에 따라서 어떤 카드사의 카드번호인지 알 수 있는 정규식이 포함되어있어요 이 정규식을 잘 잘라서 쓴다면 어떤 카드사인지 표시해주는 기능을 넣을 수 있을거예요 
반응형