^[a-zA-Z0-9]+@[a-zA-Z0-9].[a-zA-Z]$
테스트 사이트: https://regex101.com/
테스트하면서 공부하기 좋다.
정규표현식이란?
정규표현식은 특정 규칙을 갖는 문자열의 집합을 표현하는데 사용되는 형식을 갖춘 문자열이다.
A regular expression, regex or regexp (sometimes called a rational expression) is a sequence of characters that define a search pattern.
정규표현식의 각 문자는 meta character(메타 문자)와 regular character(정규 문자)로 나뉜다.
우리가 알고있는 일반적인 문자는 정규 문자에 속한다.
예를 들어 알파벳, 숫자, 독일어 (ä 요런거) 등은 정규문자에 속한다. 말그대로 문자를 뜻한다.
그 외의 특별한 의미를 지닌 문자를 메타문자라고 하는데 대표적으로 '.', '*' 등이 있다.
메타 문자 종류
| | OR을 뜻하며 |
? | ?가 뒤에 붙은 그룹 또는 문자는 0번 또는 1번 나타날 수 있다. |
* | *가 뒤에 붙은 그룹 또는 문자는 0번 이상 발생할 수 있다. |
+ | +가 뒤에 붙은 그룹 또는 문자는 1번 이상 발생할 수 있다. (*와 다른 점은 0번 허용 유무이다) |
. | 1개의 문자를 뜻한다. 단일행 모드에서는 newline 문자는 제외한다. |
( ) |
소괄호로 묶으면 그룹이 된다. ex. a(b|c)d 는 abd 또는 acd를 뜻한다. |
[ ] |
괄호사이의 문자 중 하나를 선택한다. 예를들어 [abc]d는 ad, bd, 또는 cd이다. 또한 ' - ' 기호와 함께 쓰이면 범위를 지정할 수 있다. [a-z]는 a부터 z까지의 문자 중 하나를 뜻한다. [1-9]는 1부터 9까지의 숫자 중 하나를 뜻한다. |
[^ ] |
부정. [^a-z]는 알파벳 소문자로 시작하지 않는 모든 문자를 의미한다. |
^ | 처음. 문자열의 시작을 뜻한다. |
$ | 끝. 문자열의 끝을 뜻한다. |
\n | 일치하는 패턴들 중 n번째를 선택하며, 여기서 n은 1에서 9중 하나가 올 수 있다. |
{n} | n번만큼 일치시킨다. |
{min,} | min번 이상만큼 일치시킨다. |
{min,max} | min번 이상, max번 이하만큼 일치시킨다. |
\w | 영문자, 숫자, _로 이뤄진 하나의 문자. (단어가 아닌 character다) |
\W | "_"를 제외하여 영숫자가 아닌 문자와 일치시킨다. |
\s | 공백 문자를 뜻한다. |
\S | 공백을 제외한 어떠한 문자와 일치. |
\d |
숫자를 일치시킨다. 하나의 숫자와 일치된다. \d는 [0-9]와 동일하다. |
\D |
숫자가 아닌 문자와 일치한다. |
\b |
단어의 경계. 공백, 탭, 컴마, 대시 등이 올 수 있다. |
\B |
이젠 패턴이 보이려낭? \b가 안닌것 ㅋㅋ |
예제
버전명 표기
ex. '2.0.0' , '7.0.1', '3.21.4' 와 같이 major, minor, patch 가 존재해야한다.
^([0-9]+\.){2}[0-9]+$
버전명 표기2
ex. '2.0.1.4a7dns5' , '2.0.1', '7.0.1', '2.8.0.827d8d' 와 같이 major, minor, patch 가 존재해야하며, patch 뒤에 네번째는 숫자와 문자가 올 수 있다.
^([0-9]+\.){2}[0-9]+(\.[0-9a-z]+)?$
이메일
ex. helloWorld@naver.com, hello123@naver.com 와 같이 문자, 숫자로 이루어짐 (특수문자 없다고 가정)
^[a-zA-Z0-9]+@[a-zA-Z0-9]+.[a-zA-Z]+$
혹은
^\w+@\w+.[a-zA-Z]+$
이메일2
ex. hong.gildong@naver.com 과 같이 @ 앞부분에 .이 올 수 있음
^\w+.?\w+@\w+.[a-zA-Z]+$