정규표현식

yejichoi·2023년 2월 1일
0

알고리즘 스터디

목록 보기
1/153
post-thumbnail

⚡️문자열에서 특정 문자 조합을 찾기 위한 패턴 i.e) 이메일, 전화번호

// 예를 들어 010-1111-2222 라는 전호번호는
// "숫자3개", "-", "숫자4개", "-", "숫자4개" 로 이루어져 있는데,

const regex = /\d{3}-\d{4}-\d{4}/; 
// (\d는 숫자를 의미하고, {} 안의 숫자는 갯수를 의미한다.) 

regex.test('010-1111-2222') // true; 
regex.test('01-11-22') // false;

정규식 구성

슬래쉬 문자 두개 사이로 정규식 기호가 들어가는 형태
i는 정규식 플래그

/regexr/i

// 리터럴 방식
const regex = /abc/;
cosnt flags = 'i';
const regex = new RegExp('abapplec', flags);

// 생성자 방식
const regex = new RegExp("abc");
const regex = new RegExp(/abc/); // 이렇게 해도 됨

정규식 메소드

📌 match(/정규표현식/,플래그) : 문자열에서 정규표현식에 매칭되는 항목들을 배열로 반환
📌 replace(/정규표현식/,대체문자열) : 정규표현식에 매칭되는 항목을 대체문자열로 변환
📌 split(정규표현식) : 문자열을 정규표현식에 매칭되는 항목으로 쪼개어 배열로 반환
📌 test(문자열) : 문자열이 정규표현식과 매칭되면 true, 아니면 false
📌 exec(문자열) : match와 유사하지만, 첫번째 매칭 결과만 반환

정규식 플래그

고급 검색을 위한 전역 옵션을 설정할 수 있도록 지원하는 기능

  • i : 대소문자를 구별하지 않고 검색 Ignore Case
  • g : 문자열 내의 모든 패턴을 검색 Global
  • m : 문자열의 행이 바뀌더라도 검색을 계속함 Multi Line
  • s : 개행 문자 \n이 포함되도록
  • u : 유니코드 전체를 지원 unicode
  • y : 문자 내 특정 위치에서 검색을 진행하는 sticky 모드를 활성화
// 전역검색
// `a`가 두 개 포함된 문자열
const str = "abcabc";

//공백 문자열을 나타내는 패턴
content.split(/\s+/);
//'/' : 정규표현식의 시작
//'\s' : 공백 문자. 이는 탭, 스페이스바, 줄바꿈 등을 모두 포함
//'+' : 하나 이상의 문자를 찾음. 이 경우에는 하나 이상의 공백 문자열을 찾음
//'/' : 정규표현식의 끝을 나타냄
 
// `g` 플래그 없이는 최초에 발견된 문자만 반환
str.match(/a/); // ["a", index: 0, input: "abcabc", groups: undefined]
 
// `g` 플래그가 있으면 모든 결과가 배열로 반환
str.match(/a/g); // (2) ["a", "a"]




const str = "abcABC";
 
// 대소문자 a 검색
str.match(/a/gi); // (2) ["a", "A"]

정규식 기호

  • a-zA-Z 영어알파벳(-으로 범위 지정)
  • ㄱ-ㅎ가-힣 한글 문자
  • 0-9 숫자
  • . 모든 문자열 단, 줄바꿈x
  • \d 숫자
  • \D 숫자가 아닌 것
  • \w 밑줄 문자를 포함한 영숫자 문자에 대응 i.e)[A-Za-z0-9] 와 동일
  • \W \w가 아닌 것
  • \s space 공백
  • \S space 공백이 아닌 것
  • \특수기호 특수기호 \*\^\&\!\?
  • \b 63개 문자(영문 대소문자 52개, 숫자 10개, _(underscore))가 아닌 나머지 문자에 일치하는 경계(boundary)
  • \B 63개 문자에 일치하는 경계
  • \x 16진수 문자에 일치 /\x61/는 a에 일치
  • \0 8진수 문자에 일치 /\141/은 a에 일치
  • \u 유니코드 문자에 일치 /\u0061/는 a에 일치
  • \c 제어 문자에 일치
  • \f 폼 피드(FF, U+000C) 문자에 일치
  • \n 줄 바꿈(LF, U+000A) 문자에 일치
  • \r 캐리지 리턴(CR, U+000D) 문자에 일치
  • \t 탭(U+0009) 문자에 일치

정규식 검색 기준 패턴

  • | : OR
  • [] : 괄호안의 문자들 중 하나, or 처리 묶음
    /abc/ : "abc"를 포함하는
    /[abc]/ : "a" 또는 "b" 또는 "c" 를 포함하는
    [다-바] : 다 or 라 or 마 or 바
  • [^문자] : 괄호안의 문자를 제외한 것
    [^lgEn] "l" "g" "E" "N" 4개 문자를 제외
    대괄호 안에서 쓰면 제외의 뜻, 대괄호 밖에서 쓰면 시작점 뜻
  • ^문자열 : 특정 문자열로 시작(시작점) /^www/
  • 문자열$ : 특정 문자열로 끝남(종착점) /com$/
    ⚡️ 대괄호[] 안에서 앞에 ^를 쓰면, 부정(Not)의 기능

정규식 갯수 반복 패턴

  • ? : none or just one thing /apple?/
  • * : none or many things /apple*/
  • + : at least one thing /apple+/
  • *? : 없거나 있거나 and 없거나 최대 한개: 없음 {0}와 동일
  • +? : 최소 한개, 있거나 and 없거나, 최대 한개: 한개 {1}와 동일
  • {n} : n개
  • {Min,} : 최소 Min개 이상
  • {Min, Max} : 최소 Min개 이상, 최대 Max개 이하 {3,5}? == {3}와 동일

정규식 그룹 패턴

  • () : 그룹화 및 캡쳐
  • (?: 패턴) : 그룹화(캡쳐X)
  • (?=) : 앞쪽 일치(Lookhead), /ab(?=c)/
  • (?!) : 부정 앞쪽 일치(Negative Lookahead), /ab(?!c)/
  • (?<=) : 뒤쪽 일치(Lookbhind), /(?<=ab)c/
  • (?<!) : 부정 뒤쪽 일치(Negative Lookbehind), /(?<!ab)c/

⚡️도움을 받은 블로그

요기

0개의 댓글