문자열 - 정규표현식(Regular Expression)
1. 정규표현식이란?
- Regular Expression : Regex
- 특정 패턴의 문자열을 찾기 휘한 표현 방식
- 장점 : 간단하게 표현 가능
- 단점 : 주석과 공백 없이 여러가지 기호를 혼합해 사용하기 때문에 가독성이 좋지 않음
2. 정규표현식 사용법
1) 형식 : /패턴/플래그
2) 매칭 패턴
패턴 | 의미 |
a-zA-Z | 영어알파벳(-으로 범위 지정) |
ㄱ-ㅎ가-힣 | 한글 문자(-으로 범위 지정) |
0-9 | 숫자(-으로 범위 지정) |
. | 모든 문자열(숫자, 한글, 영어, 특수기호, 공백 모두! 단, 줄바꿈X) |
\d | 숫자 |
\D | 숫자가 아닌 것 |
\w | 영어 알파벳, 숫자, 언더스코어(_), [A-Za-z0-9_] 와 동일 |
\W | /w 가 아닌 것 |
\s | space 공백 |
\S | space 공백이 아닌 것 |
\특수기호 | 특수기호 |
\b | 63개 문자(영문 대소문자 52개 + 숫자 10개 + _(underscore))가 아닌 나머지 문자에 일치하는 경계(boundary) |
\B | 63개 문자에 일치하는 경계 |
\x | 16진수 문자에 일치, /\x61/는 a에 일치 |
\0 | 8진수 문자에 일치, /\141/은 a에 일치 |
\u | 유니코드(Unicode) 문자에 일치, /\u0061/는 a에 일치 |
\c | 제어(Control) 문자에 일치 |
\f | 폼 피드(FF, U+000C) 문자에 일치 |
\n | 줄 바꿈(LF, U+000A) 문자에 일치 |
\r | 캐리지 리턴(CR, U+000D) 문자에 일치 |
\t | 탭 (U+0009) 문자에 일치 |
3) 검색 패턴
기호 | 의미 |
[] | 괄호안의 문자들 중 하나 |
[^문자] | 괄호안의 문자를 제외한 것 |
^문자열 | 특정 문자열로 시작(괄호 없음 주의!) |
문자열$ | 특정 문자열로 끝남 |
() | 그룹 검색 및 분류(match메서드에서 그룹별로 묶어줌) |
(?: 패턴) | 그룹 검색(분류X) |
\b | 단어의 처음/끝 |
\B | 단어의 처음/끝이 아님 |
4) 수량 패턴
기호 | 의미 |
? | 최대 한번(없음 |
* | 없거나 있거나 (없음 |
+ | 최소 한개(한개 |
{n} | n개 |
{Min,} | 최소 Min개 이상 |
{Min, Max} | 최소 Min개 이상, 최대 Max개 이하 |
5) 플래그
플래그 | 의미 |
g | Global: 모든 문자 검색(안 쓰면 매칭되는 첫 문자만 검색) |
i | Ignore Case: 대소문자 구분 안함 |
m | Multi line: 여러 행의 문자열에 대해 검색 |
s | .(모든 문자 정규식)이 개행 문자 \n도 포함하도록 |
u | 유니코드 전체를 지원 |
y | 문자 내 특정 위치에서 검색을 진행하는 ‘sticky’ 모드를 활성화 |
동시에 여러개 사용이 가능
ex) gi
, gm
...
6) javascript regex 주요 메소드
("문자열").match(/정규표현식/플래그)
: "문자열"에서 "정규표현식"에 매칭되는 항목들을 배열로 반환("문자열").replace(/정규표현식/, "대체문자열")
: "정규표현식"에 매칭되는 항목을 "대체문자열"로 변환("문자열").split(정규표현식)
: "문자열"을 "정규표현식"에 매칭되는 항목으로 쪼개어 배열로 반환(정규표현식).test("문자열")
: "문자열"이 "정규표현식"과 매칭되면 true, 아니면 false반환(정규표현식).exec("문자열")
: match메서드와 유사(단, 무조건 첫번째 매칭 결과만 반환)
3. 정규표현식 사용 예시
1) 웹사이트 주소
/https?:\/\/[\w\-\.]+/g
1) http
=> 로 시작하고,
2) s?
=> 다음에 s는 없거나 있고,
3) :
=> 다음에 : 가 오고,
4) \/\/
=> 다음에 특수기호 // 가 오고
5) [\w\-\.]+
=> \w(영문자, 언더스코어), 하이픈, 쩜 으로 이루어진 문자열이 한개 이상(+) 있다.
6) g
=> 매칭되는걸 모두 다 찾는다.(플래그)
2) 전화번호
/\d{2,3}-\d{3,4}-\d{4}/g
1) \d{2,3}
=> 숫자 2~3개로 시작하고,
2) \-
=> 다음에 하이픈(-)이 오고
3) \d{3, 4}
=> 다음에 숫자가 3~4개 오고,
4) \-
=> 다음에 하이픈(-)이 오고,
5) \d{4}
=> 다음에 숫자가 4개 온다.
6) g
=> 매칭되는걸 모두 다 찾는다(플래그)
3)이메일주소
/[\w\-\.]+\@[\w\-\.]+/g
1) [\w\-\.]+
=> \w(영문자, 언더스코어), 하이픈, 쩜 으로 이루어진 문자열이 한개 이상(+) 있다.
2) \@
=> 다음에 @ 가 오고,
3) g
=> 매칭되는걸 모두 다 찾는다(플래그)
4) 비밀번호
8 ~ 16자 영문, 숫자, 특수문자를 최소 한가지씩 조합
/^(?=.*[a-zA-z])(?=.*[0-9])(?=.*[$`~!@$!%*#^?&\\(\\)\-_=+]).{8,16}$/
참고
728x90