정규표현식 (regex)

dohun2·2023년 2월 14일

자바스크립트 정규표현식

정규표현식이란?

  • 특정 패턴의 문자열을 찾기 위한 표현식
// 대표적 예시 전화번호 숫자패턴 검사

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

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

정규표현식 생성방법

// 리터럴 방식
const regex = /abc/;
 
// 생성자 방식
const regex = new RegExp("abc");
  • 변수 = /패턴/플래그 형태로 이루어짐

정규표현식 플래그

const regex1 = /abc/flags;
const regex2 = new RegExp(/abc/, flags);
  • 플래그는 고급 검색을 위한 옵션
Flag의미설명
iIgnore Case대소문자 구별 안하고 검색
gGlobal문자열 내 모든 패턴 검사
mMulti Line문자열의 행이 바뀌더라도 검색을 계속한다.
s개행문자 \n을 포함함
uunicode유니코드 전체를 지원
ysticky특정 위치에서 검색을 진행하는 ‘sticky’ 모드

플래그 활용 예시

  • g: 전역검색
// `a`가 두 개 포함된 문자열을 만들었습니다
const str = "abcabc";
 
// `g` 플래그 없이는 최초에 발견된 문자만 반환됩니다
str.match(/a/);
// ["a", index: 0, input: "abcabc", groups: undefined]
 
// `g` 플래그와 함께라면 모든 결과가 배열로 반환됩니다
str.match(/a/g);
// (2) ["a", "a"]
  • i : 대소문자 모두 검색
const str = "abcABC";

console.log(str.match(/a/gi));
// (2) ["a", "A"]

console.log(str.match(/a/i));
//g를 빼면 먼저 찾는 거 반환
//[ 'a', index: 0, input: 'abcABC', groups: undefined ]

정규표현식 주요 메서드

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

메서드 활용 예시

const str = "abcABC";

console.log(str.match(/a/gi));
// (2) ["a", "A"]

console.log(str.replace(/a/g, '1'))
// 1bcABC
console.log(str.replace(/a/gi, '1'))
// 1bc1BC

console.log(str.split(/a/g))
// [ '', 'bcABC' ]
console.log(str.split(/a/gi))
// [ '', 'bc', 'BC' ]

console.log(/a/.test(str))
// ture
console.log(/d/.test(str))
// false

console.log(/a/.exec(str))
// [ 'a', index: 0, input: 'abcABC', groups: undefined ]
console.log(/a/gi.exec(str))
// [ 'a', index: 0, input: 'abcABC', groups: undefined ]

정규표현식 검색 패턴

기호사용 예시
[][가나다] = ‘가’ ’나’ ’다’ 각각을 모두 찾는다.
///가나다/ = ‘가나다’를 찾는다.
[^문자][ ] 안의 문자를 제외한 것
^문자^ 뒤의 문자로 시작하는 것
문자$$ 앞의 문자로 끝나는 것

검색패턴 활용 예시

const str = "가나다라마바사 사바마라다나가";

console.log(str.match(/가|나/g))
// [ '가', '나', '나', '가' ]

console.log(str.match(/[가나다]/g))
// [ '가', '나', '다', '다', '나', '가' ]

console.log(str.match(/가나다/g))
// [ '가나다' ]

console.log(str.match(/[^가나다]/g))
// ['라', '마', '바','사', ' ',  '사','바', '마', '라']

console.log(str.match(/^가나/g))
// [ '가나' ]
console.log(str.match(/^가라/g))
// null

console.log(str.match(/나가$/g))
// [ '나가' ]
console.log(str.match(/바사$/g))
// null

0개의 댓글