본문 바로가기

카테고리 없음

Regular Expression

^[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]+$