[JS] 16. 정규식
in JS
1. 정규 표현식
문자열에 나타는 특정 문자 조합과 대응시키기 위해 사용되는 패턴
정규식 만들기
- 정규식 리터럴 :
/ab+c/
(슬래시로 감싸기) - RegExp 객체의 생성자 함수 호출 :
let re = new RegExp("ab+c")
단순 패턴 사용하기
/abc/
어떤 문자열 s에서 왜곡없이 정확하게 abc가 있는 경우
ab c 안된다.
특수 문자 사용하기
단순보다 더 복잡한 검색이 필요한 경우
ex) a 다음에 bbbbbbbb 다음에 c (b의 갯수는 상관 x) : /ab*c/
*
: 바로 앞 문자가 0개 이상
2. 정규식에서의 특수문자 규칙
그룹핑 / 범위
|
: 또는 한개 선택/(a|b|c)/
a 또는 b 또는 c()
: 그룹핑[]
: 문자셋, 괄호안 어떤 문자든 하나 선택 /[A-Za-z0-9][^]
: 부정 문자셋, 괄호안 어떤 문자가 아닐 때(?:)
: 그룹으로 찾지만 기억하지 않는다.
최소, 최대 수량
?
: zero or one*
: zero or more+
: one or more{n}
: n번 반복{min,}
: 최소 min개{min, max}
: 최소 min, 최대 max개
경계
\b
: 띄어쓰기 기준 단어 경계\B
: 단어 경계가 아니다^
: 문장의 시작$
: 문장의 끝
문자
\
: 특수문자 문자를 표현할 때.
: 어떤 글자 (줄바꿈 문자 제외)\d
: digit 숫자\D
: digit 숫자 아님\w
: word 문자\W
: word 문자 아님\s
: space 공백\S
: space 공백 아님
3. 정규식 연습하기
Hi there, Nice to meet you. And Hello there and hi.
I love grey(gray) color not a gry, graay and graaay. grdy
Ya ya YaYaYa Ya
abcdefghijklmnopqrstuvwxyz
ABSCEFGHIJKLMNOPQRSTUVWZYZ
1234567890
.[]{}()\^$|?*+
010-898-0893
010 898 0893
010.898.893
010-405-3412
02-878-8888
dream.coder.ellie@gmail.com
hello@daum.net
hello@daum.co.kr
http://www.youtu.be/-ZClicWm0zM
https://www.youtu.be/-ZClicWm0zM
https://youtu.be/-ZClicWm0zM
youtu.be/-ZClicWm0zM
전화번호 뽑아내기
/\d{2,3}[- .]\d{3}[- .]\d{4}/
이메일 뽑아내기
/[a-zA-Z0-9._]+@[a-zA-Z]+\.[a-zA-Z0-9.]+/
유튜브 주소 뽑아내기
/(?:https:\/\/){0,1}(?:www.){0,1}youtu\.be\/(-\w{10})/
4. 정규식 활용하기
const regex = /(?:https:\/\/){0,1}(?:www.){0,1}youtu\.be\/(-\w{10})/
const url = "http://www.youtu.be/-ZClicWm0zM"
const result = url.match(regex)
console.log(result)
// [
// 'www.youtu.be/-ZClicWm0zM', // 매칭되는 전체 문자열
// '-ZClicWm0zM', // 그룹 내용
// index: 7,
// input: 'http://www.youtu.be/-ZClicWm0zM',
// groups: undefined
// ]
console.log(result[1]) //-ZClicWm0zM