Post

정규표현식

정규표현식

#Groups and ranges

구분
\|또는
()그룹
[]문자셋, 대괄호 안에 어떤 문자든
[^]부정 문자셋, 대괄호 안의 문자들이 아닌 것들만
(?:)찾지만 기억하지는 않을 때 (그룹생성X)

#Quantifiers

구분
?없거나 있거나 (zero or one)
*없거나 있거나 많거나 (zero or more)
+하나 또는 많이 (one or more)
{n}n번 반복
{min,}최소
{min,max}최소, 그리고 최대

#Boundary-type

구분
\b단어 경계
\B단어 경계가 아님
^문장의 시작
$문장의 끝

^$은 문장의 시작과 끝을 찾기때문에 m 옵션을 선택해서 검사하는 것이 더 효율적임

#Character classes

구분
\특수 문자가 아닌 문자
.어떤 글자 (줄바꿈 문자 제외)
\ddigit 숫자
\Ddigit 숫자 아님
\wword 문자
\Wword 문자 아님
\sspace 공백
\Sspace 공백 아님

한글만

1
const regex = /[ㄱ-ㅎㅏ-ㅣ가-핳]/;

전화번호

1
const regex = /\d{2,3}[- .]\d{3,4}[- .]\d{4}/;

핸드폰

1
const regex = /\d{3}[- .]\d{3,4}[- .]\d{4}/;

이메일

1
const regex = /[a-zA-Z0-9._+-]+@[a-zA-Z0-9._+-]+\.[a-zA-Z0-9.]+/;

비밀번호

  • 최소 8자 이상
  • 영문 대소문자, 숫자, 특수문자가 각각 1개 이상
1
const regex = /^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$ %^&*-]).{8,}$/;
  • 최소 8자 이상
  • 특수문자 1개 이상 포함
1
const regex = /^(?=.*?[0-9])(?=.*?[#?!@$ %^&*-]).{8,}$/;

년월일 체크 (YYYY-MM-DD)

1
const regex = /^(19|20)\d\d([- /.])(0[1-9]|1[012])\2(0[1-9]|[12][0-9]|3[01])$/;

유튜브 아이디만 가져오기

1
const regex = /(?:http?s:\/\/)?(?:www\.)?youtu.be\/([a-zA-Z0-9-]){11}/;
  • (?:http?s:\/\/):http,s가 있고 없고
1
2
3
4
5
6
const regex = /(?:http?s:\/\/)?(?:www\.)youtu.be\/([a-zA-Z0-9-]){11}/;
const url = "https://www.youtu.be/-ZClicWm0zM";

const result = url.match(regex);

const youtubeId = result[1]; // -ZClicWm0zM
  • regex[0] = 전체 문자열
  • regex[1] = match된 문자열

파일로 시작하고, 파일 확장자가 .pdf인 것만 찾기

1
2
3
4
5
6
7
8
9
10
11
const regex = /^(file.+)\.pdf$/;

const file1 = "file_record_transcript.pdf";
const file2 = "file_07241999.pdf";
const file3 = "testfile_fake.pdf.tmp";

const result = file1.match(regex);
// ["file_record_transcript.pdf","file_record_transcript"]

const result3 = file3.match(regex);
// null

전체 날짜와 연도를 모두 일치시키고 캡쳐하는 표현식 (중첩)

Capture Groups

  • Jan 1987 , 1987
  • May 1969, 1969
  • Aug 2011 2011
1
2
3
4
5
6
const regex = (\w+ (\d+))

const date1 = 'Jan 1987';
const date2 = 'May 1969';
const date3 = 'Aug 2011';

This post is licensed under CC BY 4.0 by the author.