본문 바로가기
JavaScript

[JavaScript] 정규표현식(Regular Expression)

by lvd-hy 2023. 3. 11.
반응형

정규표현식(Regular Ecpression)

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

정규 표현식 만들기

1. 정규 표현식 리터럴

슬래시로 패턴을 감싸서 작성한다.

스크립트를 불러올 때 컴파일되므로, 바뀔 일이 없는 패턴의 경우 리터럴을 사용하면 성능이 향상될 수 있다.

const re = /abc/

2. RegExp 객체의 생성자 호출

생성자 함수를 사용하면 정규 표현식이 런타임에 컴파일 된다. 바뀔 수 있는 패턴이나, 사용자 입력 등 외부 출처에서 가져오는 패턴의 경우 사용한다.

const re = new RegExp('abc')

플래그

정규 표현식은 전역 탐색이나 대소문자 무시와 같은 특성을 지정하는 플래그를 가질 수 있다.

순서에 상관없이 한꺼번에 여럿을 지정할 수 도 있다.

플래그 설명
g 전역 탐색 (없는 경우 최초 검색 결과 한번만 반환, 있는 경우 모든 검색 결과 반환)
i 대소문자를 구분하지 않음
m 여러 줄에 걸쳐 탐색

플래그 구문

// 1. 정규 표현식 리터럴
const re = /pattern/flags;
// 예시 : p를 대소문자 구분하지 않고(i), 전역 탐색한다(g)
const re = /p/ig

// 2. RegExp 객체 생성자
const re = new RegExp('pattern', 'flags');
// 예시 : p를 대소문자 구분하지 않고(i), 전역 탐색한다(g)
const re = new RegExp('p', 'ig')

 

JavaScript에서 정규 표현식 사용하기

메서드 설명
exec() 문자열에서 일치하는 부분을 탐색한다.
반환 : 일치 정보를 나타내는 배열, 없는 경우 null
test() 문자열에서 일치하는 부분이 있는지 확인한다.
반환 : true, false
match() 캡처 그룹을 포함해서 모든 일치를 담은 배열을 반환한다. (없다면 null 반환)
matchAll() 캡처 그룹을 포함해서 모든 일치를 담은 반복기를 반환한다.
search() 문자열에서 일치하는 부분을 탐색한다.
반환 : 일치하는 부분의 인덱스, 없는 경우 -1 반환
replace() 문자열에서 일치하는 부분을 탐색하고 그 부분을 대체 문자열로 바꾼다.
replaceAll() 문자열에서 일치하는 부분을 모두 탐색하고, 그 부분을 대체 문자열로 바꾼다.
split() 정규 표현식 또는 문자열 리터럴을 사용해서 문자열을 부분 문자열의 배열로 나눈다.

 

Reference

https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Regular_expressions

 

정규 표현식 - JavaScript | MDN

정규 표현식, 또는 정규식은 문자열에서 특정 문자 조합을 찾기 위한 패턴입니다. JavaScript에서는 정규 표현식도 객체로서, RegExp의 exec()와 test() 메서드를 사용할 수 있습니다. String의 match(), matchA

developer.mozilla.org

https://poiemaweb.com/js-regexp

 

RegExp | PoiemaWeb

정규표현식(Regular Expression)은 문자열에서 특정 내용을 찾거나 대체 또는 발췌하는데 사용한다. 예를 들어 회원가입 화면에서 사용자로 부터 입력 받는 전화번호가 유효한지 체크할 필요가 있다.

poiemaweb.com

https://www.google.com/search?q=%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8+%EC%A0%95%EA%B7%9C%ED%91%9C%ED%98%84%EC%8B%9D&oq=%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8+%EC%A0%95%EA%B7%9C%ED%91%9C%ED%98%84%EC%8B%9D&aqs=chrome.0.69i59j35i39j0i512l3j69i61j69i60j69i61.5212j0j7&sourceid=chrome&ie=UTF-8

반응형

댓글