반응형
정규 표현식 살펴보기
1. 정규 표현식에 대한 설명
정규 표현식 => 텍스트내에서 일치하는 문자열을 찾기 위해 문자열의 패턴을 표현하는 방식
정규 표현식은 이런 패턴을 정의할 수 있도록 용어(terms) 와 연산(operators)로 구성된다.
정규 표현식을 생성하는 방법
- 정규 표현식 리터럴을 이용하는 방법
- RegExp 객체의 인스턴스를 생성하는 방법
var pattern = /test/;
var pattern = new RegExp("test");
보통 개발시점에 어떤 정규식을 이용할지 알고 있는 경우에는 정규 표현식 리터럴을 사용하고, 실행 중에 문자열을 이용해서 동적 으로 정규 표현식을 생성해야 할 때는 생성자(RegExp)를 이용한다.
정규 표현식과 함께 사용할 수 있는 플래그
- i - 대소문자를 구별하지 않도록한다. /test/i 는 "test"뿐 아니라, "Test", "TEST", "tEsT"와도 매치
- g - 맨 처음 나타나는 부분 한 번만 매치시키는 것이 아니라, 지정된 패턴에 해당하는 모든 부분을 매치시킨다.
- m - 여러 줄을 포함하고 있는 문자열(textarea)같이 구성된 문자열을 대상으로 매치할수 있게 해준다.
이 플래그들은 정규 표현식 리터럴 끝(/test/ig) 에 추가하거나, RegExp 생성자의 두 번째 매개변수(new RegExp("test", "ig"))로 넘겨 사용할 수 있다.
2. 용어(Terms)와 연산자
정확히 같은 부분 매칭하기
- /test/에는 용어(term)가 네 개 존재하는데, 이 패턴에 매치되는 문자열은 문자열 내에 해당하는 문자들이 그대로 포함되어 있어야한다. (t 다음에는 e 다음에는 s 다음에는 t가 와야한다.)
문자 클래스를 이용해서 매칭하기
- 문자 클래스 연산자로도 불리는 집합 연산자를 이용해서 문자의 집합을 지정할 수 있는데, 대괄호 사이에 매치시키려는 문자들의 집합을 지정하는 방식을 이용 ex) [abc] 3개 중 하나를 매치하고자함을 의미
- [^abc] 와 같이 대괄호 다음에 캐럿(^) 문자를 놓으면 문자 집합에 포함되지 않은 모든 문자를 의미
- [abcdefghijklm] 이것은 [a-m]으로 간단하게 표현이 가능하다. 대시(-)는 사전순으로 "a"부터 "m" 까지를 의미
시작과 끝
- /^test/ 문자열의 처음에 test가 오는 경우만 매치
- /test$/ 문자열의 끝에 test가 오는 경우만 매치
- /^test$/ 지정된 패턴이 비교대상 문자열 전체와 일치해야 함을 나타냄
반복된 출현
- /t?est/ 는 "test" 와 "est"을 매치한다. ?는 한 번만 나타나거나 단 한번도 나타나지 않은 경우를 지정한다.
- /t+est/ 는 "test", "ttest", "tttest"와 매치한다. +는 한 번 이상 나타나는 것을 지정한다.
- /t*est/ 는 "test", "ttest", "tttest", "est"와 매치한다. *는 0번 이상 타나는 것을 지정한다.
- /a{4}/ 는 "a"가 연속 4번 나오는 것을 나타낸다. { }사이에 반복 횟수를 지정하면 정해진 횟수만큼 반복되는 경우를 나타낼 수 있다.
- /a{4,10}/ 는 "a가" 4~10번 연속으로 나오는 것과 매치한다. 콤마(,)를 사용해 범위를 지정할 수 있다.
- /a{4,}/ 는 "a"가 연속으로 4번 이상 나오는 모든 문자열과 매치된다.
미리 정의된 문자 클래스
정규 표현식 문법은 문자 집합을 나타내거나 일반적으로 사용되는 문자 클래스들을 미리 정의한 용어(term) 형태로 제공하고 있다.
미리 정의된 용어 | 대상 |
---|---|
. | 줄바꿈 문자(\n)를 제외한 모든 문자 |
\d | 0-9 사이의 10진수 숫자. [0-9]와 같다 |
\w | _를 포함한 모든 영어 알파벳과 숫자.[A-Za-z0-9__]와 같다. |
\s | 공백문자(공백, 탭, 폼피드 등) |
그룹화
- 용어(terms)로 이뤄진 그룹에 연산자를 적용하고자 한다면, 다음과 같은 괄호를 이용할 수 있다.
- /(ab)+/ 는 "ab"가 1번 이상 타나는 것과 매치된다.
- 괄호를 이용해서 그룹으로 묶여 있는 경우, 그룹화 외에도 캡처를 생성하는 역할을 하게 된다.
선택(OR)
- 선택은 | 문자를 이용해서 표현할 수 있다.
- /a|b/ 는 "a"나 "b"에 매치가 된다.
- /(ab)+|(cd)+/는 "ab" 또는 "cd"가 1번 이상 나타나는 것에 매치가 된다.
역참조
- 정규 표현식 내에 정의된 캡처를 나중에 사용하는 방법
- 역참조는 역슬래시 뒤에 참조할 캡처 번호를 쓰는 방법으로 표현하는데 번호는 1부터 시작하고 \1, \2 등이 된다.
- /^([dtn])a \1/ 이것은 /[dtn]a[dtn]/과 같지 않다. "a"뒤에 오는 문자는 "d", "t", "n"중에 아무거나 오면 되는 것이 아니라 반드시 매치가 시작된 첫 번째 문자가 와야 한다.
반응형
'프로그래밍 노트 > JAVASCRIPT' 카테고리의 다른 글
[Javascript] 정규 표현식 매치된부분 캡처하기(정규식_4) (0) | 2019.01.23 |
---|---|
[Javascript] 정규 표현식 컴파일하기(정규식_3) (0) | 2019.01.23 |
[Javascript] 정규식이 멋진 이유(정규식_1) (0) | 2019.01.21 |
[Javascript] 객체지향과 프로토타입_2 (0) | 2019.01.14 |
[Javascript] 객체지향과 프로토타입_1 (0) | 2019.01.10 |