정규식

문자열에서 특정 문자 조합을 찾기 위한 패턴


Meta문자

정규표현식에서 사용되는 기호

^ 문자열 시작
$ 문자열 종료
. 임의의 한 문자의 자리수
+ 문자 한번 이상 반복 {1, }
* 문자 0번 이상 반복 {0, }
? 존재여부 표현 (존재할수도, 존재하지 않을수도)
() 그룹 처리
{n} 문자의 개수 = n
{n,} 최소 n개의 문자
{n, m} 최소 n, 최대 m개


[xy] 문자 선택, x와 y 중에 하나
[^xy] ^은 not을 의미하며 x,y를 제외한 문자
[x-z] x에서 z까지의 문자
\d 숫자
\D 숫자가 아닌 것
\s 공백 (space)
\S 공백이 아닌것
\t tab
\^ ^
\b 단어의 경계 (boundary)


flag

flag를 사용하지 않으면 문자열에 대해서 검색을 한번만 처리하고 종료

g 대상 문자열내에 모든 패턴들을 검색 (global)
i 대상 문자열에 대해서 대/소문자를 구분하지 않음 (ignore)
m 대상 문자열이 다중 라인의 문자열인 경우에도 검색 (multi)



정규표현식 메서드

exec() 문자열에서 일치하는 부분을 탐색 (일치하는 정보의 배열)
test() 문자열에 일치하는 부분이 있는지 확인 (true 또는 false를 반환)
match() 캡처 그룹을 포함해서 모든 일치를 담은 배열 반환
matchAll() 캡처 그룹을 포함해서 모든 일치를 담은 반복기 반환
search() 문자열에서 일치하는 부분을 탐색, 일치하는 부분의 인덱스 반환 (일치가 없는 경우 -1 반환)
replace() 문자열에서 일치하는 부분을 탐색하고, 그 부분을 대체 문자열로 변경
replaceAll() 문자열에서 일치하는 부분을 모두 탐색하고, 모두 대체 문자열로 변경
split() 정규 표현식 또는 문자열 리터럴을 사용해서 문자열을 부분 문자열의 배열로 나눔





정규표현식 표현 예시


(?=.*[a-zA-Z])
최소 하나의 영문(소문자, 대문자)

(?=.*?[A-Z])
최소 하나의 대문자 영문

(?=.*?[a-z])
최소 하나의 소문자 영문

(?=.*?[0-9])
최소 하나의 숫자

(?=.*?[#?!@$%^&*-])
[...] 중에서 최소 하나의 특수문자

.{최소,최대}
문자의 최소, 최대 길이



정규표현식의 시작과 끝은 / 으로 한다.

var reg =/^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,20}$/


최소 하나의 영문자 + 최소 하나의 숫자 + 최소 8자, 최대 20자



var reg =/^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!%*#?&]{8,20}$/

최소 하나의 대문자 + 최소 하나의 소문자 + 최소 하나의 숫자 + 최소 한개의 특수문자 + 최소 8자, 최대 20자