1 minute read

정규 표현식

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

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

JS 에선 RegExp 객체와 문자열 메서드 조합해 사용

패턴과 선택적으로 사용할 수 있는 플래그(flag) 로 구성

  • 문법

    두 문법 다 내장 클래스 RegExp 의 인스턴스가 됨

    • ‘긴’ 문법

      regExp = new RegExp("pattern", flags)

      상황에 따라 동적으로 생성된 문자열 가지고 만들 때 사용됨

    • ‘짧은’ 문법

      regExp = /pattern/;

      regExp = /pattern/gmi

      ”/” 는 정규 표현식을 생성하고 있다는 것 알려줌

      중간에 표현식을 넣을 수 없음 (정적 문법)

      패턴을 알고 있을 때 사용됨

  • 플래그

    검색에 영향을 줌

    • 지원 플래그

      1. i : 대,소문자 구분 없이 하나만 검색

      2. g : 패턴과 일치하는 모든 것 찾음

      3. m : 다중 행 모드 활성화

      4. s : ‘.’이 개행 문자 \n 도 포함하도록 ‘dotall’ 모드 활성화

      5. u : 유니코드 전체 지원으로 서로게이트 쌍 올바르게 처리 가능

      6. y : 문자 내 특정 위치에서 검색 진행하는 ‘sticky’ 모드 활성화

  • str.match

    str.match(regexp) 호출 시 문자열에서 str 에서 regexp 와 일치하는 것 찾음

    • 모드

      1. 플래그 g 붙으면 패턴과 일치하는 모든 것 담은 배열 반환

      2. g 붙지 않은 경우 패턴에 맞는 첫 번째 배열 반환, 배열 인덱스 0에 저장되며 프로퍼티에 상세한 추가 정보 저장됨 (정규 표현식 괄호로 둘러쌀 경우 배열에 0 이외에 다른 인덱스 있을 수 있음)

      3. 패턴과 일치하는 부분 문자열 찾지 못한 경우 null 반환

  • str.replace 로

    str.replace(regexp, replacement)로 사용

    str 내 문자열 중 regexp 에 일치하는 부분 문자열 replacement로 교체

    플래그 g 있을 시 모든 부분 문자열 교체됨

  • regexp.test 로 일치여부 확인

    regexp.test(str)로 사용

    일치하는 부분 문자열 하나라도 존재/존재하지 않을 시 true/false 사용