Welcome to the BBOGAK

Nice to see you here

LET's GET it Dev. Knowledge

JAVA

정규식표현으로 이메일 주소 패턴 만들기

IT뽀각 2019. 12. 13. 12:11
반응형

xxxxxx@xxxx.xxx

xxxxxx@xxxx.xxx.xx

일반적으로 이메일 주소 형태는 위와 같이 @를 기준으로 ID부HOST부로 나뉩니다.

이 ID와 HOST부에 적용할 이메일 주소 패턴의 형태를 정하겠습니다.

ID부 설정

-영문 대소문자 허용

-숫자 허용

- % 등 5가지 특문 허용

 

HOST부 설정

-영문 대소문자 허용

-숫자 허용

-.   -   등 2가지 특문 허용

-위 값이 최소 1개 이상 표기된 후  .  추가

-마침표 뒤에는 영문자 대소문자 만 허용

-마침표 뒤의 문자 셋은 최소 2~ 최대 6자리 까지만 허용

 

ID부 패턴 만들기

 

우선 ID 부의 영문 대소문자 및 숫자 허용 하는 문자셋을 만들어 보겠습니다.

^[a-zA-Z0-9]

정규표현식 시작은 ^ 를 붙이니 잊지 말고 챙겨 줍시다.

 

이 문자셋에 위 5가지 특문을 허용 하는 것으로 해보겠습니다. 

그냥 문자셋 안에 나열만 하시면 됩니다.

^[a-zA-Z0-9._%+-]

참쉽죠?

 

선행 문자셋이 최소 1개이상 와야 된다는 조건으로 문자셋[...] 다음에 + 를 주가해 줍니다.

^[a-zA-z0-9._%+-]+

여기 까지가 ID 부입니다. 쉽네요.

물론 뒤에 바로 @를 붙여야 하니 HOST부 시작전 최종 모습은 아래와 같습니다

^[a-zA-Z0-9._%+-]+@

 

HOST부 패턴 만들기

시작은 동일하게 영문 대소문자 및 숫자 허용 하는 것으로 지정 하겠습니다.

[a-zA-Z0-9]

 

2가지 특문 허용하기 위해 문자 셋 안에 나열해 주면 됩니다.

[a-zA-Z0-9.-]

 

위 문자셋 중 최소 한가지 이상의 값이 나오는 것으로 지정해 줍니다.

[a-zA-Z0-9.-]+

 

이제 마침표 하나 들어 와야 겠죠? 자바에서는 back slash(\) 를 사용하기 위해 이스케이프 문자인 back slash를 한번 더 사용 합니다. 그래서 두개와 나란히 옵니다.

[a-zA-Z0-9.-]+\\.

 

마지막으로 2 ~ 6자리 영문자만 허용하는 것을 추가 해 보겠습니다.

[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}

 

이제 $ 표시를 이용하여 정규표현식 마무리를 선언 해주면 됩니다. 최종 모습은 아래와 같습니다.

[a-zA-Z0-9.-]\\.[a-zA-Z]{2,6}$

 

이렇게 정리된 표현식을 자바 코드를 이용해서 테스트 해 보겠습니다.

 

이메일 주소 패턴을 위와 같이 작성을 했습니다.

테스트 코드는 아래와 같이 4가지 이메일 주소를 만들어 봤습니다.

1번 부터 3번까지는 쉽게 이해가 되겠죠?

모두 표현식에 맞는 이메일 주소 패턴입니다.

 

4번의 경우 xxx.xx.xx라는 형식으로 들어 왔습니다.

이 경우는 표현식 패턴에 맞는 메일 형식일까요?

 

위에서 HOST 부 패턴 만들때 첫번째 문자셋 안에 마침표 ( . ) 를 허용 하는 것으로 작성 했습니다.

그렇기 때문에 bbokak-test라는 문자열 뒤에 마침표 ( . ) 가 들어와도 문제 없습니다.

 

위값들을 아래와 같은 코드로 실행 시켜 보겠습니다.

결과는 아래와 같습니다

모두 만들어 둔 패턴에 맞는 형식들 입니다.

 

하지만 문제점도 있습니다.

위와 같이 HOST부에 마침표( . ) 가 중복으로 입력되는 경우가 있을 수 있습니다.

현재 만들어둔 표현식으로는 위 코드를 실행해도 패턴에 맞는 형식으로 나옵니다.

 

이런 많은 경우의 수를 생각해서 추가적으로 표현식을 디테일하게 작성 할 수 도있습니다.

예를 들면 아래와 같은 이메일 주소 패턴을 만들어 사용 할 수 있습니다.

 

위 패턴을 이용하면 좀더 디테일한 이메일 주소 패턴이 될 수 있습니다.

하지만 이 패턴 역시 완벽하진 않습니다.

 

앞서 언급했듯 수많은 형식의 이메일 주소 패턴들이 존재하고 있기 때문 입니다.

 

지금까지 정규 표현식을 이용하여 이메일 주소 패턴을 만들어 봤습니다.

 

 

출처:https://jamesdreaming.tistory.com/196

반응형

'JAVA' 카테고리의 다른 글

[JAVA] Queue 정리  (0) 2019.12.13
[java] Stack 스택 정리  (0) 2019.12.13
다차원(2차원) 배열  (0) 2019.12.12
배열(Array) 선언 및 사용 방법  (0) 2019.12.12
JAVA - 자바 시작하기 (자바설치, 개발환경 설정)  (0) 2019.12.03