티스토리 뷰

코딩언어/javascript

정규표현식

민트초코수장 2020. 12. 17. 16:50

 

1. 정규표현식?!?

 

정규표현식이란?

문자열에 나타나는 특정 문자 조합과 대응시키기 위해 사용되는 패턴으로

자바스크립트에서는 정규표현식도 객체로 나타냅니다.

복잡해질 수 있는 조건문 혹은 반복문을 정규표현식을 이용해 간단히 표현할 수 있습니다.

but 가독성이 떨어져 정규표현식을 모른다면 뜻을 이해하기 힘듭니다.

 

정규표현식을 사용하는 메서드

정규표현식은 RegExp의 exec 메서드test 메서드

String의 match메서드 replace메서드 search메서드 split메서드에 사용하는 패턴입니다!

 

 

정규표현식 만드는 방법
let str = /^x/; //첫번째 방법

let str = new RegExp("xxx");  //두번째 방법

첫번째 방법으로는 / 로 감싸는 패턴이 있고

두번째 방법으로는 RegExp 객체의 생성자 함수를 호출하는 방법이 있습니다.

 

첫번째 방법 ( / / ) 두번째 방법 (생성자 함수 호출)
스크립트가 불러와질때 컴파일 실행 시점에 컴파일
스크립트를 바로 불러오는 경우 다른 출처에서 패턴을 가져오는 경우
정규식이 상수라면 성능이 향상 패턴이 변경될 수 있는 경우

 


2. 정규표현식에서 사용되는 문자들

 

1.특수 문자들

정규표현식 설명 간단히 표현
^x 문자열의 시작을 표현하고 ^x는 문자열이 x로 시작함을 의미한다.
x$ 문자열의 종료를 표현하고 x$는 문자열이 x로 끝난다를 의미한다.
.x 임의의 한 문자의 자리수를 표현하며 문자열이 x로 끝난다를 의미한다.
ex) ax, ox는 대응되지만 xo에는 대응되지 않는다.
x+ x가 1번 이상 반복한다.
x? x의 존재 여부를 확인한다.
x* x의 반복 여부를 확인한다.
x|y or을 표현한다. x혹은 y가 존재하는지를 의미한다.
(x) 그룹을 표현하고 x를 그룹으로 처리한다.
(x)(y) 그룹들의 집합을 표현한다.
앞에서부터 순서대로 번호를 부여하여 관리한다.
그룹화된 데이터들은 배열 형식으로 관리된다.

(x)(?:y) 그룹들의 집합에서 예외를 표현한다.
그룹 집합으로 관리되지 않음을 뜻한다.
x{n} x문자가 n번 반복한 문자를 찾는다.
x{n,} x를 n번 이상 반복한 문자를 찾는다.
x{n,m} x를 n번이상 m번 이하 반복한 문자를 찾는다.

2. 대괄호로 되어 있는 문자들

정규표현식 설명 간단한 표현
[xy] xy중에 하나를 찾는다.
[^xy] xy를 제외하고 문자 하나를 찾는다.
[x-z] x~z 사이의 문자 중 하나를 찾는다.

3. \로 되어 있는 문자들

정규표현식 설명 간단한 표현
[\b] 백스페이스와 대응된다. \b와 혼동 🚫
\b 단어 경계에 대응
문자와 공백사이의 문자를 찾는다.
사용시 앞의 문자 \b(str) 뒤의 문자 (str)\b
\B 문자와 공백 사이가 아닌 값을 찾는다.
\d 숫자 문자에 대응한다. [0-9]와 동일
\D 숫자 문자가 아닌 것에 대응 [^0-9]와 동일
\n 줄바꿈 문자에 대응한다.
\s 스페이스,탭,줄바꿈 등의 하나의 공백 문자에 대응한다.
\S 공백 문자가 아닌 하나의 문자에 대응한다.
\t 탭 문자에 대응한다.
\v 수직 탭 문자에 대응한다.
\w 밑줄(_)를 포함한 영숫자 문자에 대응한다.
\W 단어 문자가 아닌 문자에 대응한다.
\0 널 문자에 대응한다. 🚫뒤에 다른 숫자 쓰는거 금지!
\n 정규식 내부의 n번째 괄호에서 대응한 부분의 역참조

\b 예제

let str = 'he is angry';

let str2 = str.replace(/\bh/, 'sh');
console.log(str2);  			 //result: she is angry
str2 =str.replace(/y\b/, 'abc');
console.log(str2);              //result: he is angrabc

4. flag

Flag 설명
g Global-- 문자열 내의 모든 패턴을 찾는다
i Ignore Case -- 문자열의 대소문자를 구별 X
m Multi Line -- 문자열에서 행이 바뀌어도 찾는다.

flag는 정규표현식의 마지막 /의 뒤에 사용합니다.

 

 

 


3. 간단한 예제

const str = "나는 1이야 너는 2?";

console.log(str.split(/[0-9]/g));

//result
//[ '나는 ', '이야 너는 ', '?' ]

/0-9]/g를 사용하면 전체에서 0~9사이의 숫자를 찾습니다.

 

const str = "I am ironman";

console.log(str.split(/[i]/gi));

//result
//[ '', ' am ', 'ronman' ]

i를 대소문자 상관없이 찾는 것을 볼 수 있습니다.

 

 

나머지 예제는 사용하면서 하나하나씩 추가해나가겠습니다!

 

 

 

 

 

 

 

마지막으로

정규식을 간단하게 해석할 때 사용하기 좋은 사이트입니다!

regexper.com/#

 

Regexper

 

regexper.com

 

 

도움받은 블로그: www.nextree.co.kr/p4327/

반응형
Comments