정규표현식

jihye·2022년 6월 19일
0

자바스크립트

목록 보기
6/7

정규표현식이란?

문자열에서 특정 문자 조합을 찾기 위한 패턴(일정한 규칙을 가진 문자열 집합 포현)
패턴과 플래그로 구성

  • 패턴 : 문자열의 일정한 규칙 표현
  • 플래그 : 정규표현식의 검색 방식 설정(옵션)

💁🏻‍♀️ 정규표현식을 사용하는 이유는?

  • 찾으려는 문자열 혹은 바꿔야하는 문자열이 복잡할 경우, 정규표현식을 사용하게 되면 코드가 매우 간결해진다.

메타 문자

원래 그 문자가 아닌 특별한 용도로 사용하는 문자
정규표현식에서 사용하는 문자를 Meta 문자라고 표현한다

표 보기좋게 정리 할 예정..🫠

메타문자설명예시
^검색되는 문장의 시작 부분에서 찾음
찾고자 하는 문자의 앞에 붙임
중괄호 안에 있을 때는 부정을 뜻 함
^hi -> hi로 시작하는 문자열 검색
[^hi] hi를 제외한 문자열 검색
$검색되는 문장의 끝부분에서 찾음
찾고자 하는 문자의 뒤에 붙임
hi$ -> hi로 끝나는 문자열 검색
.임의의 하나의 문자('\n'을 제외한 모든 단일 문자 검색)a.c -> abc, a1c, a?c, a c
+반복을 표현하며, 앞의 문자를 1개 이상 반복ab+ -> ab, abb, abbbbbbb
*반복을 표현하며, 앞의 문자를 0개 이상 반복ab* -> a, ab, abbbbb
?존재 여부를 표현하며 바로 앞의 문자가 있을 수도 없을 수도 있음a?b -> ab, b
or를 표현
()그룹을 표현(a
(?:)그룹들의 집합에 대한 예외 표현. 그룹 집합으로 관리되지 않는다gr(?:e
[]문자셋, 괄호안의 어떤 문자든[ab]c -> ac, bc
[^]부정 문자셋, 괄호안의 어떤 문자가 아닐 때[^ab] -> a나 b가 아닌 모든 문자 의미
[^a-zA-Z0-9] -> 대소문자 a~z, 숫자 0~9를 제외 한 문자 찾는다
[a-z]범위를 표현함소문자 a~z 사이의 문자 의미
[A-Z]범위를 표현함대문자 A~Z 사이의 문자 의미
[0-9]범위를 표현함숫자 0~9 사이의 의미
[가-힣]범위를 표현함한글 가 ~ 힣 사이의 문자 의미
{}수량자 식의 시작 및 끝 부분 표시a{n} -> a가 n번 반복되는 문자 찾음
{min,}최소 min번 반복되는 문자 찾음a{3,} -> a가 최소 3번 이상 반복되는 문자 찾음
{min,max}최소 min번, 최대 max번 문자 찾음3{1,3} -> 3이 최소 1번이상, 최대 3번 이하 반복되는 문자 찾음
\bword boundary 표현, 단어 경계 표현. 단어의 첫 부분과 끝 부분 경계 지정
문자(대소문자,숫자,_)가 아닌 나머지 문자에 일치하는 경계
\bYa -> Ya가 단어 앞에서 쓰이는거 찾음 YaYaYa
Ya\b -> Ya가 뒤에서 쓰이는거 찾음 YaYaYa
\B단어 경계가 아닌 부분 표현
\ 특수문자를 메타문자가 아닌 그냥 문자로 찾을 때{}[] -> {}[]
\ddigit 의미, 숫자 전부 찾음\d{2} -> 13,55,29,01 숫자가 2개인거 전부 찾음
\Ddigit 숫자 아님. 숫자 아닌거 전부 찾음\D{2} -> ab,ji,d!
\w모든 문자열 검색, a-z, A-Z, 0-9, _\w -> a, b, c, 3, _, 0
\W문자열을 제외한 모든 것\W -> -, {, !, ^
\sspace의 약자로 공백
\S공백을 제외한 문자열

Flag

정규표현식의 옵션으로 정규식으로 검색하려는 문자 패턴에 추가적인 옵션을 넣어 원하는 문자 검색 결과를 반환하도록 한다. Flag를 사용하지 않으면 문자열에 대해 검색을 한 번만 처리하고 종료한다.

플래그설명
g모든 문자 일치(global)
i영어 대소문자를 구분하지 않고 일치(ignore case)
m여러 줄 일치(multi line)

예시

Hi there, Nice to meet you. And Hello there and hi.
I love grey(gray) color not a gry, graay and graaay.
Ya ya YaYaYa Ya

abcdefghijklmnopqrstuvwxyz
ABSCEFGHIJKLMNOPQRSTUVWZYZ
1234567899999990

.[]{}()\^$|?*+

010-898-0893
010-405-3412
02-878-8888_

dream.coder.ellie@gmail.com
hello@daum.net
hello@daum.co.kr

https://www.youtu.be/-ZClicWm0zM
https://youtu.be/-ZClicWm0zM
youtu.be/-ZClicWm0zM
  1. 전화번호만 선택 => \d{2,3}[- .]\d{3}[- .]\d{4}
  • 처음 숫자는 최소 2개 이상, 3개 이하이고, 중간에 '-, , .' 중에 하나로 검색
  • 두번째 숫자는 3개이고 중간 역시 동일
  • 세번째 숫자는 숫자 4개 선택
  1. 이메일만 선택 => [a-zA-Z0-9-.+_]+@[a-zA-Z0-9]+.[a-zA-Z0-9.]+
  • 아이디 영역은 대소문자와 숫자, -, ., +, _ 를 포함한 문자가 여러번 반복 됨
  • 중간 이메일을 뜻 하는 @ 선택
  • 마지막 대소문자와 숫자가 여러번 반복되고, 특수문자 써야 하니까 . 사용, 다시 대소문자와 숫자 여러번 반복하고 . 포함
  1. 유튜브 주소에서 아이디만 가져오기 => (https?:\/\/)?(www.?)?youtu.be\/([a-zA-Z0-9-]+)
  • http 혹은 https가 있을 수도 없을 수도 있다. (https?:\/\/)?
  • www 혹은 www. 이 있을 수도 없을 수도 있다. (www.?)?
  • youtu.be/ 무조건 있는데 특수문자니까 \/ 사용.
  • 아이디 영역은 그룹화 해서 범위 지정하고 여러번 반복 ([a-zA-Z0-9-]+)
  • 이 때, 아이디 값의 길이를 안다면 {n}써주어서 길이 명시해주면 더 좋음

정규표현식 자바스크립트에서 활용!

(더 정리 할 예정)

profile
프론트엔드 개발자

0개의 댓글