콘텐츠로 이동

2024 06 05

2024-06-05

정규 표현식

참고: https://inpa.tistory.com/entry/JS-%F0%9F%93%9A-%EC%A0%95%EA%B7%9C%EC%8B%9D-RegExp-%EB%88%84%EA%B5%AC%EB%82%98-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-%EC%89%BD%EA%B2%8C-%EC%A0%95%EB%A6%AC

  • 사용처
    • 각각 다른 포맷으로 저장된 많은 전화번호 데이터 추출 시
    • 사용자가 입력한 이메일, 폰 번호, IP 주소 등에 대한 검증
    • 코드에서 특정 변수의 이름을 치환하고 싶은 경우
    • 특정 조건과 위치에 따른 문자열 공백/특수문자 제거
  • 정규식 구성
    • /regexr/i
      • / : 시작, 종료 기호
      • regexr : 패턴
      • i : 플래그
  • 정규식 메서드
    • ("문자열").match(/regexr/i) : "문자열"에서 regexr에 매칭되는 항목을 배열로 반환
    • ("문자열").replace(/regexr/, "대체문자열") : regexr에 매칭되는 항목을 "대체문자열"로 변환
    • ("문자열").split(regexr) : "문자열"을 regexr에 매칭되는 항목으로 쪼개 배열로 반환
    • regexr.test("문자열") : "문자열"이 regexr에 매칭되면 true, 아니라면 false
    • regexr.exec("문자열") : "문자열"에서 regexr에 매칭되는 첫 항목만 반환 (match와 비슷)
  • 정규식 플래그
    • i(Ignore case) : 대소문자를 구별하지 않고 검색
    • g(Global) : 문자열 내의 모든 패턴 검색
    • m(Multiline) : 문자열의 행이 바뀌더라도 검색 계속
    • u(Unicode) : 유니코드 문자 지원
    • y(Sticky) : 문자 내 특정 위치에서 검색을 진행하는 sticky 모드 활성화
    • s(DotAll) : .(모든 문자 정규식)이 개행 문자 \n도 포함하도록
  • 정규식 기호 모음
    • a-zA-Z: 영어 알파벳
    • ㄱ-ㅎ가-힣: 한글
    • 0-9: 숫자
    • .: 모든 문자열 (숫자/한글/영어/특수기호/공백 모두), but 줄바꿈 X
    • \d: 숫자
    • \D: 숫자가 아닌 문자
    • \w: 밑줄 문자를 포함한 영숫자 문자
    • \W: \w가 아닌것
    • \s: space 공백
    • \S: space 공백이 아닌 것
    • \특수기호: 특수기호
    • \b: 63개 문자(영문 대소문자 52개 + 숫자 10개 + _(언더스코어))가 아닌 나머지 문자에 일치하는 경계
    • \B: 63개 문자에 일치하는 경계
    • \x: 16진수 문자에 일치
    • \O: 8진수 문자에 일치
    • \u: 유니코드 문자에 일치
    • \c: 제어문자에 일치
    • \f: 폼 피드 문자에 일치
    • \n: 줄 바꿈 문자에 일치
    • \r: 캐리지 리턴 문자에 일치
    • \t: 탭 문자에 일치
  • 정규식 검색 기준 패턴
    • ^문자열: 특정 문자열로 시작 (시작점)
    • 문자열$: 특정 문자열로 마무리 (종착점)
    • [^문자]: 괄호 안의 문자를 제외한 것
    • |: 또는
    • []: 괄호안의 문자들 중 하나
  • 정규식 갯수 반복 패턴
    • ?: 없거나, 최대 한개만
    • *: 있거나 or 없거나
    • +: 최소 한개 or 여러개
    • {n}: n개
    • {n,}: 최소 n개 이상
    • {n,m}: 최소 n개 이상, 최대 m개 이하
  • 정규식 그룹 패턴
    • (): 그룹화 및 캡쳐
    • (?:패턴): 그룹화 (캡쳐 X)
    • (?=): Lookahead - 앞쪽 일치
    • (?!): Negative Lookahead - 부정 앞쪽 일치
    • (?<=): Lookbehind - 뒤쪽 일치
    • (?<!): Negative Lookbehind - 부정 뒤쪽 일치