정규표현식
정규표현식
#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
구분 | 뜻 |
---|---|
\ | 특수 문자가 아닌 문자 |
. | 어떤 글자 (줄바꿈 문자 제외) |
\d | digit 숫자 |
\D | digit 숫자 아님 |
\w | word 문자 |
\W | word 문자 아님 |
\s | space 공백 |
\S | space 공백 아님 |
한글만
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.