아이디, 이메일, 전화번호의 패턴 유효성 검사시 사용
문자열의 검색과 치환을 위한 용도시 사용
정규 표현식 리터럴
/ /
슬래시로 패턴을 감싸서 작성한다
정규 표현식 리터럴은 스크립트를 불러올 때마다 컴파일 된다.
바뀔 일이 없는 패턴의 경우 리터럴을 사용하면 성능이 향상될 수 있다.
RegExp 객체의 생성자 호출 → const re = new RegExp(’정규 표현식’);
그룹 & 범위
|
→ 또는
()
→ 그룹 지정
[ ]
→ 괄호 안의 어떤 문자든지 찾아라
/gr[ae]y/gm
→ gr로 시작하고 중간에 a, e 중 하나가 오고 마지막은 y로 끝나는 문자열 내의 모든패턴 찾기 + 행이 바뀌어도 찾음
/gr[a-f]y/gm
→ gr로 시작하고 중간아 a~f 중 하나가 오고 마지막은 y로 끝나는 + 위와동일
/[a-zA-Z0-9]/gm
→ 소문자, 대문자, 숫자가 오는 문자열 찾음 + 위와동일
[xy]
→ x, y 중 하나를 찾는다
[^xy]
→ x, y를 제외한 문자 찾는다
[x-z]
→ x~z 사이의 문자 중 찾는다
[^]
: 대괄호 안의 어떤 문자든 제외하고 찾아라
/[^a-z]/gm : 소문자를 제외하고 찾아라 + 위와동일
수량
?
: 0~1번 온다
/gra?y/gm : a가 없거나 하나 있거나
*
: 0번 이상
+
: 1번 이상
{n}
: n번 반복
{n,}
: 최소 n번
{n, m}
: 최소 n번 , 최대 m번
경계
\b
→ 앞 \bgame
: 단어 앞에 위치한 game 찾음
→ 뒤 game\b
: 단어 뒤에 위치한 game 찾음
\B
→ \b를 제외한 문자 찾음
^
→ 문장의 시작
→ ex) /^com/gm
$
→ 문장의 끝
→ ex) /com$/gm
문법
.
→ 줄바꿈 문자를 제외한 모든 문자
\
→ 특수문자가 아닌 문자 찾을 때
\^
→ 특수문자를 식에 문자 자체로 포함한다
→ (?같은 것들은 ?라고 해야 인식된다)
→ ex) /\./gm
: 문장 내에서 .
문자를 찾는다
\d
→ 숫자(digit)를 찾는다( = [0-9]
)
\D
→ 숫자(digit)가 아닌 값을 찾는다 ( = [^0-9]
)
\s
→ 공백문자(띄어쓰기)를 찾는다
\S
→ 공백(띄어쓰기)이 아닌 문자를 찾는다
\w
→ 알파벳 + 숫자 + _ (word)를 찾는다
\W
→ 알파벳 + 숫자 + _ (word)를 제외한 모든 문자를 찾는다.
\t
→ Tab 문자를 찾는다
\v
→ Vertical Tab 문자를 찾는다
ex) (\w+)://([\w.-]+):?(\d+)?
모두 가져올 필요 없이 내가 원하는 문장의 키워드만 가져오면 된다.
[cmf]an
→ cmf 중 하나가 오고 + an가 온다
[^b]og
→ b를 제외한 문자가 오고 + og가 온다
[A-Z][a-z][a-z]
→ A-Z 사이의 문자 하나가 오고 + a-z 사이 문자 하나 + a-z 사이 문자 하나
waz{3,5}up
→ wa가 앞에 오고 +z가 3~5번 오고 + up가 온다
a{2,4}.+
→ a가 2~4번 오고 + 모든문자(.)가 한 번이상 온다(+)
aa+b*c+
→ aa가 오고 + b가 0번이상오고(*) + c가 한 번이상 온다(+)
[0-9]+ files* found\?
→ 숫자가 한번이상(+) + 공백 + file + s가 0번이상 + 공백 + foun + ?
\d\.\s+abc
→ 숫자 + . + 공백 한번이상 + abc
^Mission\: successful$
→ Mission 문장의 시작에(^) + : + 공백 + successful 문장의 끝에($)
^(file.+)\.pdf$
→ (file + 모든문자가 한번이상) 문장의 시작에(^) + . + pdf 문장의 끝에($)
file_record_transcript, file_07241999 괄호끼리 그룹화
(\w+ (\d{4}))
→ (알파벳, 숫자, _ 가 1번이상 + (공백 + 숫자가 4번)), 괄호끼리 그룹화
(\d+)x(\d+)
→ (숫자 1번이상) + x + (숫자 1번이상), 괄호끼리 그룹화
I love (cats|dogs)
→ I love + cats or dogs
.+
→ 모든 문자 0번이상
^-?\d+(,\d+)*(\.\d+(e\d+)?)?$
→ 시작문장-(0~1번) + 숫자(1번이상) + (, + 숫자(1번이상))0번이상 + ( . +숫자(1번이상) + (e + 숫자(1번이상))(0번이상))(0번이상)마지막문장
1?\s?\(?(\d{3})\)?[\s-]?\d{3}[\s-]?\d{4}
→ 1(0
1번) + 공백(0
1번) + ( (0
1번) + (숫자 3번) + ) (0
1번) + 공백, - 중 하나 (0
1번) + 숫자3번 + 공백,- 중 하나 (0
1번) + 숫자 4번
^([\w\.]*)\S+
→ (알파벳, 숫자, . 중 하나가(0개이상)) 그룹화 + 공백이 아닌 문자(1개이상)
(\w+)\.(jpg|png|gif)$
→ (알파벳, 숫자, . 1개이상)그룹화 + . + (jpg or png or gif)가 문장 마지막
^\s*(.*)\s$
→ 문장의 시작은 공백(0개이상) + 그룹화(모든 문자(0개이상)) + 문장의 마지막은 공백(0개이상)
Flag 종류
g
→ Global : 문자열 내의 모든 패턴을 찾는다
i
→ Ignore Case : 문자열의 대소문자를 구별하지 않는다
m
→ Multi Line : 문자열이 행이 바뀌어도 찾는다.
전화번호 찾기 : /\d{2,3}[-. ]\d{3}[-. ]\d{4}/gm
이메일 찾기 : /[a-zA-Z0-9._+-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9.]+/gm
const regax = /(?:https?://)?(?:www.)?youtu.be/([a-zA-Z0-9-]{11})/;
const url = ‘https://www.youtu.be/-ZClicWm0zM’;
const result = url.match(regax);
result[1];
https://github.com/dream-ellie/regex
RegExr: Learn, Build, & Test RegEx
RegexOne - Learn Regular Expressions - Lesson 1: An Introduction, and the ABCs