View
회사 업무를 하다 보면 예외 처리를 엄청 꼼꼼히 해 주어야 하는데, 그래서인지 정규표현식도 굉장히 많이 쓰인다.
늘 필요한 정규표현식은 구글링해서 복붙해 왔던 나… 이제는 더이상 미룰 수 없다… 공부하자..!
정규표현식을 만드는 두 가지 방법
- 리터럴
슬래시로 패턴을 감싸서 작성한다.
const re = /ab+c/;
RegExp
객체의 생성자 호출
정규표현식 패턴 작성하기
정규 표현식 패턴은 /abc/
처럼 단순한 문자로 구성하거나, 단순한 문자와 특수 문자의 조합으로 구성할 수 있다.
/abc/
처럼 단순 문자로 구성된 패턴은 abc
라는 문자의 조합이 일치하는 문자열을 찾는다. Grab crab
처럼 a, b, c가 모두 들어가 있지만 ab c
이기 때문에 일치한다고 보지 않는다.
이런 상황처럼 공백이나 하나 이상의 b를 찾는 등 직접적으로 같은 단순 패턴 이상의 것들을 하고 싶을 때는 특수 문자를 사용해야 한다.
정규표현식에 사용되는 특수 문자는 다음과 같은 분류로 나눌 수 있다.
문자 클래스
글자와 숫자처럼 다른 유형의 문자를 구분한다.
[xyz]
[a-d]
특정 범위를 -
로 나타낼 수 있다.
- ex)
[a-d]
=[abcd]
- 하지만 문자 사이에 놓인 게 아니라 처음이나 끝에 들어가 있다면 문자로서의 ‘-’로 간주된다.
- ex)
[-abcd]
와 매칭되는 문자열로는 “arch”, “brisket”, “non-profit”이 있다.
- ex)
[^xyz]
[^a-c]
부정을 의미하는 문자 클래스다. 대괄호로 묶인 문자를 제외한 모든 문자와 일치한다.
^
는 입력의 시작을 나타낼 수도 있다.
.
종결 문자(\n
, \r
, /u2028
)를 제외한 모든 문자와 매치된다.
- ex)
/ .y/
는 my와 ay와는 매치되지만 yes와는 매치되지 않는다.
\d
모든 아라비아 숫자 노래와 매치된다.
- ex)
\d
=[0-9]
\D
모든 아라비아 숫자를 제외한 문자와 매치된다.
- ex)
\D
는 “B2”와 “B”로 매치된다.
\w
밑줄을 포함한 알파벳, 숫자와 매치된다.
\W
밑줄, 알파벳, 숫자를 제외한 모든 문자와 매치된다.
\s
공백, 탭, FF(Form Feed), LF(Line Feed)를 포함한 모든 유니코드 공백들과 매치된다.
- ex) “foo bar”에서
/s/w*/
와 매치되는 것은 “ bar”이다.
2. 어서션
- 줄이나 단어의 시작과 끝을 나타내는 경계, 일치가 가능한 방법을 나타내는 패턴(전방탐색, 후방탐색, 조건 표현식) 등
3. 그룹과 범위
수량자
일치할 문자나 표현이 반복되어야 할 횟수를 나타낸다.
x*
x와 0번 이상 일치한다.
- ex)
/bo*/
와 매치: “A ghost booooed”, “A bird warbled”, 매치되지 않음: “A goat grunted”
x+
x와 1번 이상 일치한다.
x?
x와 0번 또는 1번 매치된다.
x{n}
n이 양의 정수인 경우 x가 정확히 n번 발생하는 것과 매치된다.
- ex)
/a{2}/
와 매치: “caandy”, “caaaaandy”, 매치되지 않음: “candy”
x{n,}
n이 양의 정수인 경우 x가 n개 이상인 항목과 일치한다.
- ex)
/a{2,}/
와 매치: “caandy”, “caaaaandy”, 매치되지 않음: “candy”
5. 유니코드 속성 이스케이프
- 대/소문자, 수학 기호, 문장 부호 등 유니코드 문자 속성에 따라 문자를 구분한다.
'Level-Up > develop' 카테고리의 다른 글
[JS] sort() (0) | 2022.03.05 |
---|