유효성 검사를 위한 정규 표현식
정규 표현식(Regular Expression)
주로 패턴(pattern)으로 부르는 정규 표현식[1]은 특정 목적을 위해 필요한 문자열 집합을 지정하기 위해 쓰이는 식이다.
문법
기본적인 정규 표현식의 문법은 아래와 같다.
문자 | 기능 | 설명 |
---|---|---|
. | 문자 | 1개의 문자와 일치한다. |
[ ] | 문자 클래스 | [ 와 ] 사이의 문자 중 하나를 선택한다. [a-z] 는 a부터 z까지 중 하나를 의미한다. |
^ | 처음 | 문자열의 처음을 의미한다. |
$ | 끝 | 문자열의 끝을 의미한다. |
[^ ] | 부정 | 문자 클래스 안의 문자를 제외한 나머지를 선택한다. [^ab]c 는 ac, bc 를 제외한다. |
( ) | 하위식 | 여러 식을 하나로 묶을 수 있다. abc:adc 와 a(b:d)c 는 같은 의미이다. |
\n | 일치하는 n번째 패턴 | 일치하는 패턴들 중 n번째를 선택한다. n은 1부터 9까지이다. |
\* | 0회 이상 | 0개 이상 문자를 포함한다. a*b 는 b, ab, aab, aaab … 를 포함한다. |
{m, n} | m회 이상 n회 이하 | a{1,3}b 는 ab, aab, aaab를 포함하지만 b, aaaab는 포함하지 않는다. |
자주 쓰이는 유효성 검사를 위한 정규 표현식
이메일 양식 검증
let email = 'johnDoe@email.com'
const IsValidateEmail = (email) => {
return /^[A-Za-z0-9.\-_]+@([A-Za-z0-9-]+\.)+[A-Za-z]{2,6}$/.test(email)
}
IsValidateEmail(email) // true
숫자 양식
let num = '09'
const IsValidateNum = (str) => {
return /^[0-9]*$/.test(str)
}
IsValidateNum(num) // true
닉네임 양식
한글, 영문, 특수문자 (- _ .) 포함한 2 ~ 12글자 닉네임
let name = 'abcd09_efg'
const IsValidateName = (str) => {
return /^[a-zA-Zㄱ-힣0-9-_.]{2,12}$/.test(str)
}
IsValidateName(name) // true
전화번호 (000-0000-0000)
let phone = '010-1234-5678'
const IsValidatePhoneNumber = (str) => {
return /^\d{2,3}-\d{3,4}-\d{4}$/.test(str)
}
IsValidatePhoneNumber(phone) // true
이 외에도 다양한 검증을 정규 표현식 문법으로 나타낼 수 있다. 이를 RegExr에서 연습해볼 수 있다. 다양한 레퍼런스를 제공한다.
Notes
[1]정규 표현식(正規表現式, 영어: regular expression, 간단히 regexp 또는 regex, rational expression) 또는 정규식(正規式)은 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어이다.