본문 바로가기
JavaScript

정규식 표현

by 코린이 박원장👶 2022. 8. 16.

정규식 표현

정규 표현식, 또는 정규식은 문자열에서 특정 문자 조합을 찾기 위한 패턴입니다. 반복문과 조건문을 사용한 복잡한 코드도 정규표현식을 이용하게 된다면 매우 간단하게 표현할 수 있습니다. 다만...가독성은 떨어지게 됩니다.
처음 접하는 저희같은 초보들에겐 이해하기 힘든 내용인데요. 그래도 좌절하지말고 열심히 공부해봅시다.


■ 표현

정규표현식을 만드는 방법은 두가지가 있습니다.

01_ 정규 표현식 리터럴

슬래시로 패턴을 감싸서 작성합니다. 스크립트를 불러올 때 컴파일 되므로, 바뀔일이 없는 패턴일 경우에 사용하기에 용이합니다.

const re = /ab+c/ // /:시작,종료 기호 ab+c:패턴

02_ RegExp 객체의 생성자 호출

정규 표현식이 런타임에 컴파일 됩니다. 바뀔 수 있는 패턴이나, 외부 출처에서 가져오는 패턴의 경우 사용합니다.

const re = new RegExp('ab+c')

■ 주요 메서드

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

■ 플래그

전역 탐색이나 대소문자 무시와 같은 특성을 지정하는 플래그를 가질 수 있습니다. 이 플래그는 단독으로 사용할 수 도 있고, 순서상관없이 여럿을 지정할 수도 있습니다.

플래그 설명
d 부분 문자열 일치에 대해 인덱스값을 생성합니다.
g 문자열 전체를 비교탐색합니다.
i 대소문자 구분없이 비교탐색합니다.
m 여러 행에 걸쳐 탐색합니다(여러 행의 문자열을 비교탐색합니다). 이 플래그를 사용하게되면 ^와 $는 각각 전체 입력 문자열의 시작과 끝이 아니라, 각줄의 시작과 끝에 대응하게 됩니다.
s 개행 문자가 .과 일치하는지 비교탐색합니다.
u "unicode",패턴을 유니코드 포인트의 시퀀스로 간주합니다.
y 대상 문자열의 현재위치에서 탐색을 시작합니다.

■ 패턴

/abc/처럼 단순한 문자로 구성하거나, /ab+c/와 같이 문자와 특수문자의 조합으로 구성할 수도 있습니다.

패턴 설명
abc abc 문자열을 검색합니다.
/abc/='abc'
[abc] a, b, c 중 문자 하나를 검색합니다.
/[abc]d/='ad', 'bd', 'cd'
[^abc] a, b, c를 제외한 문자 하나를 검색합니다.
/[^abc]d/='ed', 'fd', 'gd'
[A-Z] 알파벳 대문자를 검색합니다.
[a-z] 알파벳 소문자를 검색합니다.
[0-9] 0-9까지의 숫자를 검색합니다.
. 하나의 문자를 검색합니다. '마침표'의 의미로 사용하는 경우 '₩.'으로 표현해야합니다.
\w 알파벳, 숫자, _를 검색합니다.
\W 알파벳, 숫자, _를 제외하고 검색합니다.
\d 숫자를 검색합니다.
\D 숫자를 제외하고 검색합니다.
\s 하나의 공백을 검색합니다.
^ 행의 첫 문자가 일치해야 함을 의미합니다.
$ 행의 끝 문자가 일치해야 함을 의미합니다.
* *앞의 문자가 0번 이상 반복을 의미합니다.
/a*b/ = 'b', 'ab', 'aab', 'aaab', 'aaa...b'
+ + 앞의 문자가 1번이상 반복을 의미합니다.
/a+b/ = 'ab', 'aab', 'aaab', 'aaa...b'
? ?앞의 문자가 0번 또는 1번 의미합니다.
/a?b/ = 'b', 'ab'
{} /₩d{3}/은 숫자3개를 의미합니다.
/₩d{3,5}/은 숫자3~5개를 의미합니다.
/₩d{3,}/은 숫자3개 이상을 의미합니다.
a|b a or b 를 의미합니다.
( abc ) 그룹화를 의미합니다.

·단순 패턴 사용하기

단순 패턴은 문자열을 있는 그대로 탐색할 때 사용합니다. 예를 들어, /abc/ 패턴은 문자열에서 정확한 순서로 "abc"라는 문자의 조합이 나타나는 부분과 일치합니다. 그러므로 이 패턴은 "Hi, do you know your abc's?"와 "The latest airplane designs evolved from slabcraft." 두 문자열에서 일치에 성공하고, 일치하는 부분은 "abc"일 것입니다. 반면 "Grab crab"에서는 일치하지 않는데, 이 문자열은 부분 문자열로 "ab c"를 포함하긴 하지만, 정확하게 "abc"를 포함하지는 않기 때문입니다.

·특수 문자 사용하기

하나 이상의 "b"를 찾는다거나 공백 문자를 찾는 등 직접적인 일치 이상의 탐색이 필요할 땐 특수 문자를 사용합니다. 예를 들어, "하나의 "a" 이후에 0개 이상의 "b", 그 뒤의 "c""와 일치해야 하면 /ab*c/ 패턴을 사용할 수 있습니다. "b" 뒤의 *는 "이전 항목의 0번 이상 반복"을 의미합니다. 이 패턴을 문자열 "cbbabbbbcdebc"에 대해 사용하면, 일치하는 부분 문자열은 "abbbbc"일 것입니다.

728x90

'JavaScript' 카테고리의 다른 글

문자열 검색 메서드(indexOF/lastIndexOf)  (6) 2022.08.16
문자열변경메서드(slice/substring/substr)  (6) 2022.08.16
내장 함수  (4) 2022.08.12
배열 메서드(join/push/pop)  (11) 2022.08.11
요소 선택  (8) 2022.08.05

댓글


HTML이미지
HTML이미지

JAVASCRIPT

자세히 보기
HTML이미지