본문 바로가기
JavaScript

[JavaScript] 정규표현식

by jane.dev 2021. 10. 14.
반응형
정규 표현식
문자열에 나타나는 특정 문자 조합과 매칭시키기 위해 사용하는 패턴

 

정규 표현식을 만드는 방법

1. 정규식 리터럴 사용

var regex = /a+b/;

슬래시로 감싸는 패턴으로 스크립트를 불러올 때 컴파일됨(정규식이 상수일 때 사용)

 

2. RegExp 객체의 생성자 함수 호출

var regex = new RegExp("a+b");

정규식이 실행 시점에 컴파일됨(정규식의 패턴이 변경될 수 있거나 / 사용자의 입력과 같은 다른 곳에서부터 패턴을 가져올 경우 사용)

 

 

정규 표현식 구성

1. 단순 패턴을 사용

/abc/ 라는 패턴을 사용할 경우, abc라는 문자열을 정확하게 포함해야만 대응

aaaaabccccc	// abc라는 전체 문자열이 있어 대응
cccccbaaaaa	// abc라는 문자열을 포함하고 있지만 대응되지 않음

 

2. 특수 문자 사용

/ab*c/ 라는 패턴을 사용할 경우, a뒤 0개 이상의 b와 바로 연달아 c가 나오는 문자열 대응

abbbbbbbbbbc	// a 문자 뒤 0개 이상의 b, 연달아 나오는 c

 

※ 여러 특수문자

. : 개행 문자를 제외한 모든 단일 문자와 대응

/.t/ 패턴 사용

ot	// 대응
pt	// 대응
tie	// 대응하지 않음

 

* : 앞 표현식이 0회 이상 연속으로 반복되는 부분과 대응

/go*/ 패턴 사용

goooooooo	// goooooooo와 대응
greate		// g와 대응
apple		// 대응되지 않음

? : 앞 표현식이 0회 또는 1회 나타나는 부분과 대응

/p?ri?/ 패턴 사용

prague	// pr과 대응
paris	// ri와 대응
europe	// r과 대응

 

\  

\문자 : 해당 문자가 특별하기 때문에 문자 그대로 해석되면 안됨

\b - 단어 경계에 대응

/\ba/ 	// apple에 대응(단어 경계에 있는 a에 대응)
/\bpp/	// apple에 대응하지 않음(경계에 있지 않음)

 

\특수문자 : 해당 문자는 특별하지 않고 문자 그대로 해석되어야 함

백슬래시가 없는 /b*/는 0개 이상의 b문자와 대응됨을 나타내지만, /b\*/ - b*문자열에 대응

b*c*d	// b*에 대응

 

| : 한쪽만 대응(혹은)

cream | tea 패턴 사용

cream cheese	// cream과 대응
cup of tea	// tea와 대응

 

$ : 입력 부분의 끝과 대응

/r$/ 패턴 사용

enter	// 문자열의 끝 r과 대응
rabbit	// 대응되지 않음