독도갈매기의 개발 블로그

[JS] 정규 표현식이 뭐길래 배우는걸까? 본문

Javascript

[JS] 정규 표현식이 뭐길래 배우는걸까?

독도갈매기 2020. 11. 28. 18:19

정규 표현식 정리하기

정규식 생성

First, 리터럴 방식

let Reg = /ab+c/;

정규식 리터럴은 스크립트가 불러와질 때 컴파일됩니다.
만약 정규식이 상수라면, 위와 같이 사용 하는 것이 성능을 향상시킬 수 있습니다.

Second, 객체 인스턴스 생성 방식

let Reg = new RegExp("ab+c");

정규식 객체인 RegExp의 생성자 함수를 사용해 인스턴스를 생성하는 방법도 존재합니다.
이 경우 리터럴 방법과 달리 정규식이 실행 시점에 컴파일됩니다.

정규식의 패턴이 변경될 수 있는 경우, 혹은 사용자 입력과 같이
다른 출처로부터 패턴을 가져와야 하는 경우에는 생성자 함수를 사용하셔야 합니다.

둘의 차이점은?

위에서 설명되어 있듯이 리터럴 방식 같은 경우에는 스크립트가 불러와질 때 실행되죠?
쉽게 말해 프로그램시작 되었을 때를 의미합니다.

반대로 객체 인스턴스방식은 정규식이 실행 시점에 실행됩니다.
이것도 쉽게 말해 정규식으로 거르는 코드가 실행되었을 때를 의미합니다.
여기서 코드는 한줄의 코드를 의미합니다.

정규식 사용하기

메소드 설명
exec 대응되는 문자열을 찾는 RegExp메소드입니다. 정보를 가지고 있는 배열을 반환 합니다.
대응되는 문자열을 찾지 못했다면 null을 반환합니다.
test 대응되는 문자열이 있는지 검사하는 RegExp메소드입니다.
true나 false를 반환합니다.
match 대응되는 문자열을 찾는 RegExp메소드입니다. 정보를 가지고 있는 배열을 반환합니다.
대응되는 문자열을 찾지 못했다면 null을 반환합니다.
search 대응되는 문자열이 있는 검사하는 String 메소드입니다.
대응된 부분의 인덱스를 반환합니다.
replace 대응되는 문자열을 찾아 다른 문자열로 치환하는 String메소드입니다.
split 정규식 혹은 문자열을 대상 문자열을 나누어 배열로 반환하는 String메소드입니다.

리터럴, 인스턴스 모두 가능한 메소드 알아보기

간단한 예시로 exec()함수를 사용해보겠습니다.

리터럴 방식

let myReg = /d(b+)d/g;
let myarr = myReg.exec('cdbbdbsbz');

img

객체 인스턴스 방식

let myReg = new RegExp('d(b+)d', 'g');
let myarr = myReg.exec('cdbbdbsbz');

img

패턴은 분량이 많아 건너뛰었습니다.


오랜만에 올리는 포스팅이면서 원래 목표는 하루 한개 포스팅이었지만 여러가지 일이 겹쳐서 늦어지게 되었네요;;
이제부터 올리는 포스팅들은 하루 한개는 힘들것같습니다. 그래도 최대한 올려보겠습니다.

오늘은 오랜만에 올린 기념으로 프로그래밍을 하게되면 무조건 쓰게되어 있는 정규식을 알아봤습니다.
배워두면 어딘가에는 꼭 쓸모있고 언젠가 쓰게되는 개념이니 제 포스팅은 흥미를 갖고 다른 개념도 찾아보시길 권장드립니다.
mozilla에 들어가시면 공식문서에서 설명하는 것을 보실 수 있습니다.

Comments