정규표현식(regex)

jeong dain·2022년 9월 29일
0

정규표현식이란?

문자열에서 특정 문자 조합을 찾기 위한 패턴

  • 패턴과 플래그 조합으로 이용되고, 패턴은 /로 감싸준 뒤 플래그를 배치한다.
  /pattern/flag
  /b[a,e,i]g/i -> bag, beg, big 이라는 단어를 대소문자 구분하지 않고 찾는다 

패턴(pettern)

  • ^ : 문자열의 처음을 지정
  • $ : 문자열의 끝을 지정
  • . : 줄 바꿈 문자(\n)를 제외한 임의의 한 문자를 의미
  • ? : 해당 문자 패턴이 0번 또는 1번만 반복
  • * : 해당 문자 패턴이 0번 이상 반복
  • + : 해당 문자 패턴이 1번 이상 반복
  • * : 문자가 reaex로 사용되지 않게 하는 장치
  • | : 선택 의미 (OR)
  • [] : 대괄호 안의 특수 문자와 일치
  • {...} : 중괄호 안에 반복되는 횟수를 지정
  • (...) : 그룹화의 시작과 끝을 의미

플래그(flag)

  • g(global) : 모든 문자를 검색(배열로 반환)

  • i(ignoreCase) : 영어 대소문자를 구분하지 않는 조건

  • m(multi line) : 문자열의 행이 바뀌어도 패턴 검색을 계속하는 조건

  • y(sticky) : 생성된 정규 표현식 인스턴스에서 lastIndex라는 속성 사용
    -> g와 함께 사용할 경우 g를 무시

    const str = "sticky sticky"
    const regExp = /i/y;
    regExp.lastIndex = 9;
    srt.match(regExp);
    // ["i", index: 9, input: "sticky sticky", ...
  • u(unicode) : 유니코드 문자 처리

    const mood = 'have a good day🙂';
    const regExp = /[\u{1F600}-\u{1F64F}]/gu;
    //['🙂']
    	

예제

https://velog.io/@jeongda/%EC%A0%95
위 주소에서 @뒤에오는 블로그명 추출하기

const url = "https://velog.io/@jeongda/%EC%A0%95"
url.match(/(?<=\@).*(?=\/)/)[0];
// 'jeongda'

메서드

  • str.match(정규식)
    정규식과 일치하는 전체 문자열을 첫 번째 요소로 포함하는 배열을 반환
    /g 를 사용하면 일치하는 모든 요소를 배열로 반환
  • str.replace(정규식, 변경하려는 문자열)
    정규식과 일치하는 전체 문자열을 두 번째 파라미터로 받는 문자열로 치환
    /g 를 사용하면 일치하는 모든 문자열을 치환
  • str.search(정규식)
    정규식과 첫 번째로 일치하는 문자열의 index를 반환
    일치하는 부분이 없을 경우 -1을 반환
  • str.split(정규식)
    정규식과 일치하는 문자열을 기준으로 나눈 문자열들을 요소로 하여 배열을 반환

Reference

http://www.tcpschool.com/php/php_regularExpression_basic
https://hamait.tistory.com/342
https://hanamon.kr/javascript-%EC%A0%95%EA%B7%9C%ED%91%9C%ED%98%84%EC%8B%9D-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-%EA%B0%9C%EB%85%90%ED%8E%B8/

profile
Web Frontend Developer #TypeScript #React #NextJS🤸‍♀️

0개의 댓글