[Worksheet 220428] 정규표현식

방예서·2022년 4월 28일
0

Worksheet

목록 보기
19/47
JavaScript Level up

정규 표현식

개요

heropblog-regexp

정규식 생성

정규 표현식이란?

문자열을 검색하고 대체하는 데 사용 가능한 일종의 형식 언어(패턴)이다.

역할

  • 문자 검색

  • 문자 대체

  • 문자 추출

정규식 생성

  • 생성자
    RegExp() 생성자 함수를 사용한다.
const regexp1 = new RegExp('^abc');
//(표현식)

const regexp2 = new RegExp('^abc', 'gi');
//(표현식, 플래그)
  • 리터럴 방식
    / 로 감싸진 패턴을 리터럴로 사용한다.

const regexp1 = /^abc/;
// /표현식/

const regexp2 = /^abc/gi;
// /표현식/플래그

해보기


//문자열을 백틱(`)을 사용하면 줄바꿈이 가능하다.
const str = `
010-1234-1234
thisemail@gmail.com
https://www.omdbapi.com/?apikey=7035c60c&s=frozen
The quick brown fox jumps over the lazy dog.
abbcccdddd
`

const regexp1 = new RegExp('the', 'gi');
const regexp2 = /the/gi;
console.log(str.match(regexp)); //[the, the]

메소드

  • regexp.test(str)
    일치 여부(boolean)를 반환한다.

  • str.match(regexp)
    일치하는 문자열의 배열을 반환한다.

  • str.replace(regexp, 대체문자)
    일치하는 문자열을 대체하고 대체된 문자열을 반환한다.

플래그(옵션)

  • none
    아무 옵션 주지 않으면 가장 먼저 찾은 첫번째 일치하는 것만 반환한다.

  • g
    모든 문자 일치(global)

  • i
    영어 대소문자를 구분 않고 일치(ignore case)

  • m
    여러 줄 일치(multi line)
    각각의 줄을 시작과 끝으로 생각하겠다.

* 정규표현식에서 어떤 기능을 하는 기호를 그 기호 자체로 사용하고 싶을 때 백슬래시() 로 명시한다.

패턴(표현)

  • ^ab
    줄 시작에 있는 ab와 일치

  • ab$
    줄 끝에 있는 ab와 일치

  • .
    임의의 한 문자와 일치
    어떤 특정한 부분을 어떠한 문자로도 일치해도 상관 없다.
    ex) /h..p/ === http, habp, ...

  • a|b
    a 또는 b와 일치

  • ab?
    b가 없거나 b와 일치
    ex) /https?/ === https, http ...

  • {3}
    3개 연속적으로 일치
    ex) /d{2}/ === dd

  • {3,}
    3개 이상 연속적으로 일치

  • {3,5}
    3개 이상 5개 이하 연속적으로 일치

  • [abc]
    a 또는 b 또는 c

  • [a-z]
    a부터 z 사이의 문자 구간에 일치(영어 소문자)

  • [A-Z]
    A부터 Z 사이의 문자 구간에 일치(영어 대문자)

  • [0-9]
    0부터 9 사이의 문자 구간에 일치(숫자)
    ex) /[0-9]{1,}/g === 1개 이상의 숫자가 연속되는 문자

  • [가-힣]
    가부터 힣 사이의 문자 구간에 일치(한글)

  • \w
    word. 63개 문자(대소영문 52개, 숫자 10개, _)

  • \b
    63개 문자에 일치하지 않는 문자 경계(boundary)
    ex) /\bf\w{1,}\b/ === 문자 f로 시작하는 1개 이상의 문자인데 경계에서 시작해서 경계에서 끝나는 것(단어)

  • \d
    숫자(digit)에 일치

  • \s
    공백(space, tab, 줄바꿈 등)에 일치
    ex) str.replace(/\s/g, '') === str에서 모든 공백 문자를 없애라.

  • ?=
    앞쪽 일치
    ex) /.{1,}(?=@)/ === @ 앞쪽에 일치하는 1개 이상 문자

  • ?<=
    뒤쪽 일치
    ex) /(?<=@.{1,})/ === @ 뒤쪽에 일치하는 1개 이상 문자
profile
console.log('bang log');

0개의 댓글