IT 소스/정규 표현식

자바스크립트 정규 표현식이란?

한량이야기 2022. 3. 28. 12:44
반응형

안녕하세요. 경제적, 시간적 자유를 꿈꾸는 한량입니다.

 

자바스크립트를 공부하면서 정규식이란 말을 한 번쯤을 들어 봤을 것입니다.

정규식은 코딩을 하면서 많이 사용하지도 않고 사용하기도

힘들어서 나중에 배워야지 하는 경우가 대부분입니다.

하지만 정규식을 한 번만 잘 배워두면 어렵지 않게 사용하실 수 있습니다. 

 

정규 표현식의 사용 이유

정규표현식은 문자열을 판독하는 언어 패턴이라고 생각하면 됩니다. 

간단한 문자 검색부터, 전화번호, 이메일, 비밀번호 검사 등 복잡한 문자열을 빠르게 검색할 수 있습니다.

 

자바스크립트에서의 정규표현식은 보통 다음과 같은 기능을 수행합니다. 

1. 문자 검색 기능

2. 문자 대체 기능

3. 문자 추출 기능

 

자바스크립트에서 정규식을 생성하는 방법은 크게 두 가지가 있습니다.

생성자 함수 방식으로 RegExp 생성자를 호출하여 생성할 수도 있고

리터럴 방식으로 / 로 감싸진 방식으로 생성할 수도 있습니다. 

const regexp1 = new RegExp("^abcd");  // RegExp 생성자 함수 방식

const regexp = /^abcd/;  // 리터럴 방식

생성자 함수 방식보다 리터럴 방식이 편리하여 보통의 경우에는 리터럴 방식을 사용합니다. 

하지만 경우에 따라서는 RegExp 생성자를 사용해야 하는 경우도 있습니다. 

 

자바스크립트 메소드

메소드 문법 설명
exec 정규식.exec(문자열) 검색 후 일치하는 하나의 정보를 Array로 반환
test 정규식.test(문자열) 검색 후 일치 여부를 Boolean으로 반환
match 문자열.match(정규식) 검색 후 일치하는 문자열을 배열로 반환
search 문자열.search(정규식) 검색 후 일치하는 문자열의 인덱스를 숫자로 반환
replace 문자열.replace(정규식,대체문자) 검색 후 일치하는 문자열을 대체문자로 치환 한 후 문자열을 반환
split 문자열.split(정규식) 검색 후 일치하는 문자열을 분할하여 배열로 반환

 

플래그

플래그를 사용하면 기존 결과 값과 완전히 다른 결과가 도출될 수도 있습니다.

플래그는 정규 표현식의 추가 옵션입니다.  정규 표현식으로 검색하려는 문자열의 패턴에 옵션을 추가하여 검색 결과를 반환하게 합니다.

플래그  설명
g 모든 문자를 검색한다. (global의 약자)
i 영어 대소문자를 구분하지 않는다.  (ignore case의 약자)
m 여러 줄에 시작과 끝 부분을 있게 해준다.  (multi line의 약자)

정규식을 생성하는 방법도 약간 다릅니다. 

const regexp1 = new RegExp("[a-z]", "gi");  // RegExp 생성자 함수 방식

const regexp = /[a-z]/gi;  // 리터럴 방식

 

정규 표현식(패턴)

표현식은 매우 다양해서 그 기호와 매칭 되는 의미를 암기하지 않으면 사용할 수 없습니다. 

 

아래 표는 자주 사용하는 패턴입니다.  

정규 표현식 설명
^ 줄(line)의 시작지점에서 일치
$ 줄(line)의 끝지점에서 일치
. 임의 한 문자와 일치 (특수기호, 띄어쓰기 까지 포함)
* 0회 이상 반복되는 문자와 일치
+ 1회 이상 반복되는 문자와 일치
? 포함하지 않거나 1회만 일치
{2} 2개 연속 일치
{2, } 2개 이상 연속으로 일치
{2, 6} 2에서 6개 사이로 연속 일치
[abc] a or b or c 중 일치, [ ] 안에서는 점 or 별 같은 특수 문자도 일반 문자로 처리
[^abc] a or b or c 가 아닌 나머지 문자에 일치 
[a-z] a에서 z까지 소문자 구간에 일치
[A-Z] A에서 Z까지 대문자 구간에 일치
[0-9] 0에서 9까지 숫자에 일치
[가-힣] 가에서 힣까지 한글에 일치
\d 숫자에 일치
\D 숫자를 제외 한 문자에 일치
\w 영어, 숫자, 언더바에 일지
\W 영어, 숫자, 언더바를 제외한 문자에 일치
\s 공백에 일치
\S 공백을 제외한 문자에 일치
\특수문자 특수문자에 일치
\b 문자열 처음과 끝
\B 문자열 처음과 끝 제외
\n 줄바꿈
\0 Null에 일치
\t 탭에 일치

 

반응형