정규표현식

·2022년 12월 25일
0

study

목록 보기
53/81
post-thumbnail

정규표현식?

특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어

  • //사이에 조건을 넣어줌
  • ^ : 문자열의 시작, $ : 문자열의 끝
  • + : 조건의 문자가 하나 이상이면 통과
  • 예시)/^[a-zA-Z0-9_+-]+$/;
    : 문자열을 처음부터 끝까지 검증하는데 []조건안의 문자가 하나 이상 존재하면 통과
  • 정규표현식 뒤에 i를 적어두면 알아서 대소문자 구분해준다.
  • 예시) /^[a-z0-9]+$/i
  • g : Global 의 표현하며 대상 문자열내에 모든 패턴들을 검색

자주 사용하는 정규표현식

  1. 영문자 소문자, 숫자, "-", "_" 로만 구성된 길이 2 ~ 10자리 사이 문자열

/^[a-z0-9_-]{2,10}$/

  1. 신용카드 번호
  • 19자리 숫자와 "-": /^[0-9-]{19}$/
  • 4-4-4-4 체크: /^[0-9]{4}[-\s.]?[0-9]{4}[-\s.]?[0-9]{4}[-\s.]?[0-9]{4}$/
  1. 영문자 대소문자와 숫자로만 구성

/[a-zA-Z0-9]/

  1. 전화번호

3자리-3~4자리-4자리(사이에 1자 아무거나 가능)):
/^[(]?[0-9]{3}[)]?[-\s.]?[0-9]{3,4}[-\s.]?[0-9]{4}$/

3자리-3~4자리-4자리(사이에 "-" 고정): /^\d{3}-\d{3,4}-\d{4}$/

휴대폰&전화번호: /(^02.{0}|^01.{1}|[0-9]{3})([0-9]+)([0-9]{4})/

휴대폰번호: /^01(?:0|1|[6-9])[.-]?(\d{3}|\d{4})[.-]?(\d{4})$/

  1. 이메일주소

/^([a-z0-9_.-]+)@([\da-z.-]+).([a-z.]{2,6})$/

  1. 패스워드

최소 8자 이상으로 영문자 대문자, 영문자 소문자, 숫자, 특수문자가 각각 최소 1개 이상:
/^(?=.?[A-Z])(?=.?[a-z])(?=.?[0-9])(?=.?[#?!@$ %^&*-]).{8,}$/

최소 8자 이상으로 숫자, 특수문자가 각각 최소 1개이상:
/^(?=.?[0-9])(?=.?[#?!@$ %^&*-]).{8,}$/

  1. 특수문자와 공백 선택

한글포함 특수문자와 공백: /[^?a-zA-Z0-9/]/

한글제외 특수문자와 공백: /[^-가-?a-zA-Z0-9/ ]/

정규표현식 검사

  1. test()
    => 정규식과 비교하여 통과하면 true 반환, 통과하지 않으면 false 반환
// nickname 형식(숫자,대소문자 조합의 3자리 이상)
    const nicknameCheck = /^[A-Za-z0-9]{3,}$/;
    if (!nicknameCheck.test(nickname)) {
      return res
        .status(412)
        .json({ errorMessage: "nickname 형식이 올바르지 않습니다." });
    }
  1. match()
    => 정규식과 비교하여 포함되면 true 반환, 포함되지 않으면 false 반환
// password 형식(nickname이 포함된 password인지 아닌지 판별)
    if (password.match(nickname)) {
      return res
        .status(412)
        .json({ errorMessage: "password에 nickname이 포함되어 있습니다." });
    }
profile
개발자 꿈나무

0개의 댓글