Web Hacking/Study
정규 표현식
박연준
2023. 7. 1. 23:27
- 정규 표현식(regular expression, regexp, regex)은 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어이다.
- 만약
DREAM-무작위 숫자
형태의 입력 데이터를 검증하고 싶은 경우 정규 표현식을 사용해 손쉽게 구현할 수 있다.function DREAMChecker(value){ var re = /DREAM-\d+/; var OK = re.exec(value); if (OK) { console.log(OK[0]); } else { console.log("Not Found"); } } DREAMChecker("DREAM-1"); // DREAM-1 DREAMChecker("DREAM-31337"); // DREAM-31337 DREAMChecker("DREAM-A"); // Not Found DREAMChecker("DREAM-123A"); // DREAM-123
/DREAM-\d+/
의 정규식을 통해 원하는 데이터 형태를 검증하는 것을 확인할 수 있다.
\d
와+
는 정규 표현식에서 특별한 의미를 가지는 문법 중 하나이다.
\d
는 Any Digit 즉 숫자를 의미하며,+
One or More 즉 하나 이상인 경우를 의미한다.
- 두 문법이 합쳐지면 숫자가 하나 이상인 경우를 의미하며 다양한 숫자를 검증할 수 있다.
정규 표현식 문법
- Character Classes
문법 설명 예시 코드 결과 [ab]
Single Character,한 문자와 매칭되는 문자에 대해서 탐색합니다. [ab]c ab ac bc [^ab]
Character Except,한 문자와 매칭되지 않는 문자에 대해 탐색합니다. [^ab]c ab ac bc dc ec [a-z],[A-Z],[0-9]
Character Range,특정 문자열 범위에 대해서 탐색합니다. [a-f] [A-C] [^2-5] abcdefghijk abcABCDEF 123456789
- Quantifiers
문법 설명 예시 코드 결과 ?
Zero or One, 해당 조건이 존재하지 않거나 한번만 존재하는 문자를 탐색합니다. abc? ab abc abd abcc *
Zero or More, 해당 조건이 존재하지 않거나 하나 이상 존재하는 문자를 탐색합니다. abc* ab abc abd abcc +
One or More, 해당 조건이 하나 이상 존재하는 문자를 탐색합니다. abc+ ab abc abd abcc {N,N}
Length, 해당 조건의 길이를 지정합니다. {3}은 길이가 3인 경우를 의미 합니다. {3,}은 3개 이상을 의미합니다. {3,6}은 길이가 3개와 6개 사이인 경우를 의미합니다. a{2,3} a aa aaa aaaa
- Meta Sequences
문법 설명 예시 코드 결과 .
Any Single Character, 하나의 문자열로 대체합니다. ab.c abc adc aac abd |
Matches either, 입력 문자 중 하나라도 만족하는 경우를 탐색합니다. [a|c]b ab aa cb ac \s, \S\
소문자 s는 whitespace를 의미한다. 대문자 S는 whitespace를 제외한 문자열을 의미한다. \d, \D
소문자 d는 숫자를 의미한다. 대문자 D는 숫자가 아닌 문자열을 의미한다.
- Anchors
문법 설명 예시 코드 결과 ^
Start of string, 문자열의 시작을 의미합니다. ^abc abc babc $
End of string, 문자열의 끝을 의미합니다. abc$ abc aabc aabcd
정규 표현식 Flags
- 정규 표현식은 Flag를 통해 전체 문법에 대한 특정한 옵션을 추가하여 사용할 수 있다.
Flag 설명 예시 코드 결과 g global, 매칭되는 모든 문자를 탐색합니다. /abc/ /abc/g abc abc abc abc m multi line, ^
와$
사용 시 각 라인 마다 각각 탐색합니다./^\d/gm 1 2 3 i insensitive, 대소문자를 구분하지 않는다. /abc/gi abc ABC