정규표현식(Regex)은 Regular Expression로 텍스트에서 우리가 원하는 특정한 패턴을 찾을 때 혹은 백엔드로 정해진 형태로 넘기기 전 한 번 유효성 검사를 하는 경우 등 유용하게 사용할 수 있다.
실무에서 자주 사용하거나 요긴하게 쓰일 것 같은 패턴으로 정리할 것이다. (선정기준이 주관적이기에 여기에 있는 것이 전부가 아님!)
우선, 정규표현식은 패턴+플래그로 이루어 진다.
패턴은 슬래쉬( / )로 감싸면서 시작을 한다. 그리고 패턴 뒤에 플래그를 활용하여 옵션을 줄 수 있다.
//기본형태
const regex = /pattern/flag
cat과 매칭되는 부분 필터
/cat/
cat 또는 dog 중 하나라도 매칭되는 부분 필터 (or 연산자)
/cat|dog/
cat 또는 dog 중 하나라도 매칭되는 그룹을 필터하거나 bird와 매칭되는 부분 필터(소괄호로 그룹핑)
/(cat|dog)|(bird)/
gr로 시작하고, e 또는 a로 매칭되면서 y로 끝나게 매칭되는 부분 필터 1
/gr(e|a)y/
gr로 시작하고, e 또는 a로 매칭되면서 y로 끝나게 매칭되는 부분 필터 2
/gr[ea]y/
gr로 시작하고, e 부터 f 까지 중에서 매칭되면서 y로 끝나게 매칭되는 부분 필터
/gr[e-f]y/
gr로 시작하고, e 부터 f 까지 중에서 매칭되지 않으면서 y로 끝나게 매칭되는 부분 필터 (not sign)
/gr[^e-f]y/
gr로 시작하고, a가 있거나 없어도 되면서 y로 끝나게 매칭되는 부분 필터
/gra?y/
gr로 시작하고, a가 있거나 많거나 없어도 되면서 y로 끝나게 매칭되는 부분 필터
/gra*y/
gr로 시작하고, a가 있거나 많아도 되면서 y로 끝나게 매칭되는 부분 필터
/gra+y/
gr로 시작하고, a가 2개에서 3개까지 이면서 y로 끝나게 매칭되는 부분 필터
/gra{2,3}y/
맨 앞에 ko로 시작하는 단어 부분 필터
/\bko/
맨 뒤에 ko로 끝나는 단어 부분 필터
/ko\b/
맨 앞에 ko로 시작하는 문장 부분 필터
/^ko/
맨 앞에 ko로 시작하는 문장 부분 필터
/ko$/
정규표현식에서 쓰이고 있는 문자열을 찾을 때에는 escape해줘야 한다.(백슬러쉬 ( \ ) )
/\[\]/ -> []
모든 숫자(digit)
/\d/
숫자가 아닌 모든 character
/\D/
모든 문자열(word)
/\w/
문자가 아닌 모든 character
/\W/
모든 띄어쓰기(space)
/\s/
띄어쓰기를 제외한 모든 character
/\S/
i 플래그는 대소문자 구분 없이 검색
g 플래그는 일치하는 모든 패턴을 검색
m 플래그는 다중 행모드를 활성화
전화번호 + 휴대폰번호 1 (-)
/\d{2,3}-\d{3,4}-\d{4}/
전화번호 + 휴대폰번호 2 (.)
/\d{2,3}.\d{3,4}.\d{4}/
전화번호 + 휴대폰번호 3 (only digit)
/\d{2,3}\d{3,4}\d{4}/
이메일
/[a-zA-Z0-9._+-]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+/
검색
str.match(regexp)
위치검색
str.search(regexp)
치환
str.replace(regexp, replacement)
일치여부
regexp.test(str)
테스트
let reg = /\d{2,3}[-.]?\d{3,4}[-.]?\d{4}/
reg.test('01012345678') // true
reg.test('010-1234-5678') // true
reg.test('010-1234.5678') // true ... ? 구분자를 설정하자.