정규표현식(regex)는 regular expression 의 약자로,
텍스트에서 우리가 원하는 특정한 패턴을 찾고, 다른 문자열로 변경할 때 쓰인다.
ex: 텍스트 사이에서 전화번호, 혹은 웹사이트, 이메일 형태의 패턴 찾기
사용자가 입력한 데이터가 이메일이나 패스워드같은 특정한 패턴에 부합하는지 유효성 검사를 할 때도 사용.
/
와 /
사이에 우리가 찾고자 하는 패턴을 작성해준다.
Chracter | 뜻 |
---|---|
` | ` |
() | 그룹 |
[] | 문자셋, 괄호안의 어떤 문자든 |
[^] | 부정 문자셋, 괄호안의 어떤 문가 아닐때 |
(?:) | 찾지만 기억하지는 않음 |
Chracter | 뜻 |
---|---|
? | 없거나 있거나 (zero or one) |
* | 없거나 있거나 많거나 (zero or more) |
+ | 하나 또는 많이 (one or more) |
{n} | n번 반복 |
{min,} | 최소 |
{min,max} | 최소, 그리고 최대 |
Chracter | 뜻 |
---|---|
\b | 단어 경계 |
\B | 단어 경계가 아님 |
^ | 문장의 시작 |
$ | 문장의 끝 |
Chracter | 뜻 |
---|---|
\ | 특수 문자가 아닌 문자 |
. | 어떤 글자 (줄바꿈 문자 제외) |
\d | digit 숫자 |
\D | digit 숫자 아님 |
\w | word 문자 |
\W | word 문자 아님 |
\s | space 공백 |
\S | space 공백 아님 |
/\d{2,3}[- .]\d{3,4}[- .]\d{4}/gm
010 8980 0893
010 898 0893
010.898.0893
010-405-3412
02-878-8888
/[a-zA-Z0-9._+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9.]+/gm
junzero.741@gmail.com
hello@daum.net
hello@daum.co.kr
/(?:https?:\/\/)?(?:www\.)?youtu.be\/([a-zA-Z0-9-]{11})/gm
https://www.youtu.be/-ZClicWm0zM
https://youtu.be/-ZClicWm0zM
youtu.be/-ZClicWm0zM
const regex = /(?:https?:\/\/)?(?:www\.)?youtu.be\/([a-zA-Z0-9-]{11})/;
const url = "https://youtu.be/-ZClicWm0zM";
const result = url.match(regex);
console.log(result);
/* (2) ["https://youtu.be/-ZClicWm0zM",
"-ZClicWm0zM",
index: 0,
input: "https://youtu.be/-ZClicWm0zM",
groups: undefined]
*/
match
메서드는 문자열이 정규식과 매치되는 부분을 검색한다.
// .. 생략
const result = url.match(regex);
const id = result[1]
console.log(id);
// "-ZClicWm0zM"
유튜브 주소에서 id 만 추출했다.
dream-ellie's github : https://github.com/dream-ellie/regex
dream-ellie's youtube : https://www.youtube.com/watch?v=t3M6toIflyQ&t=181s