정규식 - Part 1

CHan·2023년 3월 14일

1. 정규표현식 - Regular Expression

  • 프로그래밍에서 문자열을 다룰 때, 문자열의 일정한 패턴을 표현하는 일종의 형식 언어를 말한다.
    정규식이라고도 부르며, 보통 RegEx 혹은 RegExp라 많이 쓴다.

2. 사용하는 곳

  • 대표적으로 입력칸에 전화번호나 이메일을 입력할 때 옳지 않은 정보를
    입력했을 경우 경고창이나 알림창을 보았을 것이다.
    이런 경우 대부분 정규 표현식을 사용한다.

  • 간단한 사용법으로 다음과 같은 상황에 유용하게 쓰인다.

    • 각각 다른 포맷으로 저장된 엄청나게 많은 전화번호 데이터를 추출해야 할 때
    • 사용자가 입력한 이메일, 휴대폰 번호, IP 주소 등이 올바른지 검증하고 싶을 때
    • 코드에서 특정 변수의 이름을 치환하고 싶지만, 해당 변수의 이름을 포함하고 있는 함수는 제외하고 싶을 때
    • 특정 조건과 위치에 따라서 문자열에 포함된 공백이나 특수문자를 제거하고 싶을 때

3. 정규식 구성

  • 정규식 구성 코드
    - 슬래쉬 문자 두개 사이로 정규식 기호가 들어가는 형태이다.
    - i는 정규식 플래그이다.

  • 1) 정규식 메서드

    • (1) ("문자열").match(/정규표현식/플래그)
      "문자열"에서 "정규표현식"에 매칭되는 항목들을 배열로 반환
    • (2) ("문자열").replace(/정규표현식/, "대체문자열")
      "정규표현식"에 매칭되는 항목을 "대체문자열"로 변환
    • (3) ("문자열").split(정규표현식)
      "문자열"을 "정규표현식"에 매칭되는 항목을 쪼개어 배열로 반환
    • (4) (정규표현식).text("문자열")
      "문자열"이 "정규표현식"과 매칭되면 true, 아니면 false 반환
    • (5) (정규표현식).exec("문자열")
      match 메서드와 유사하지만 무조건 첫번째 매칭 결과만 반환한다.
  • 2) 정규식 플래그
    !! 정규식 플래그는 정규식을 생성할 때 고급 검색을 위한 전역 옵션을 설정할 수 있또록 지원하는 기능이다.

    • (1) i - Ignore Case
      대소문자를 구별하지 않고 검색한다.
    • (2) g - Global
      문자열 내의 모든 패턴을 검색한다.
    • (3) s
      .(모든 문자 정규식)이 개행 문자 \n도 포함하도록
    • (4) u - unicode
      유니코드 전체를 지원
    • (5) y - sticky
      문자 내 특성 위치에서 검색을 진행하는 'sticky' 모드를 활성화
    • g : 전역 검색
      전역 검색 플래그가 없는 경우에는 최초 검색 결과 한 번만 반환하는 반면,
      있는 경우에는 모든 검색 결과를 배열로 반환한다.
    • m : 줄바꿈 검색
      여러 줄의 문자열에서 필터링 해야 될 때 사용된다.
      입력 시작(^) 앵커나 입력 종료($) 앵커는 전체 문자열이 아닌
      각 줄 별로 대응되게 만들어졌기 때문에, 만일 여러 줄을 검색해야
      한다면 m 플래그를 사용한다고 보면 된다.
    • i : 대소문자 구분 없음
      정규식은 기본적으로 대소문자를 구분 (Case Sensitive)
      대신 i 플래그를 통해 대소문자 구분하지 않을 수 있다.
profile
Hello World!

0개의 댓글