유효성 검사를 위한 정규 표현식

정규 표현식(Regular Expression)

주로 패턴(pattern)으로 부르는 정규 표현식[1]은 특정 목적을 위해 필요한 문자열 집합을 지정하기 위해 쓰이는 식이다.

문법

기본적인 정규 표현식의 문법은 아래와 같다.

문자 기능 설명
. 문자 1개의 문자와 일치한다.
[ ] 문자 클래스 [] 사이의 문자 중 하나를 선택한다. [a-z]a부터 z까지 중 하나를 의미한다.
^ 처음 문자열의 처음을 의미한다.
$ 문자열의 을 의미한다.
[^ ] 부정 문자 클래스 안의 문자를 제외한 나머지를 선택한다. [^ab]cac, bc 를 제외한다.
( ) 하위식 여러 식을 하나로 묶을 수 있다. abc:adca(b:d)c 는 같은 의미이다.
\n 일치하는 n번째 패턴 일치하는 패턴들 중 n번째를 선택한다. n은 1부터 9까지이다.
\* 0회 이상 0개 이상 문자를 포함한다. a*bb, ab, aab, aaab 를 포함한다.
{m, n} m회 이상 n회 이하 a{1,3}bab, 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) 또는 정규식(正規式)은 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어이다.

Reference

2022년 01월 12일에 수정됨
YUNSU BAE

YUNSU BAE

주니어 웹 개발자 배윤수 입니다!

예술의 영역을 동경하고 있어요. 🧑‍🎨