본문 바로가기
Java

[Java] 정규식(Regular Expression)

by jn4624 2022. 3. 19.
반응형

1. 대표적인 패턴

패턴 의미
x 문자 x
xyz 문자 xyz
[xyz] x,y,z 중 하나의 문자
[a-z] a~z 중 하나의 문자
[^xyz] x,y,z가 아닌 하나의 문자
[^a-z] a~z가 아닌 하나의 문자
abc|xyz 문자열 abc 또는 xyz
{숫자} 반복 횟수
^x 시작문자 x
x$ 종료문자 x
. 하나의 문자
x* 0개이상 계속되는 x
\ 다음에 오는 문자를 이스케이프 처리
\d 숫자 0~9
\D 숫자가 아닌 문자 = [^0-9]
\W 영문, 숫자, 언더바 = [A-za-zo-9_]
\s 공백문자(스페이스, 탭, 줄바꿈 등)
\S 공백문자 이외의 문자 = [^\s]
\t 수평탭
\n 줄바꿈 코드

 

2. 참고사항

1. ^ -> 시작표시(매칭이 처음부터 되어야 함)

2. $ -> 끝표시(문자열 끝에 매칭되어야 함)

3. [] -> 문자열 셋

- [ab][a-z][0-9] -> 첫글자는 a 또는 b이고 그 다음에 a~z가 나오고 그 뒤에 0~9가 나온다는 뜻

- []안에 ^를 쓰면 부정의 의미

4. * -> 0번 이상 반복

5. + -> 1번 이상 반복

6. ? -> 0 또는 1회

7. {} -> 횟수 표시

- [a][2]이면 aa이고 [a]{2,}이면 a가 2개 이상이며 [a]{2,4}이면 aa, aaa, aaaa이다.

8. | -> or의 뜻

9. {} -> 그룹화

10. . -> 뉴라인(\n) 제외한 한 문자(진짜 .을 사용하기 위해선 \.으로 표시해야 한다

 

3. 자주 사용하는 정규표현식

공백없는 숫자와 대소문자 /^[a-zA-Z0-9]*$/
공백포함 숫자와 대소문자 /^[a-zA-Z0-9 ]*$/
한글포함 특수문자와 공백 /[^?a-zA-Z0-9/]/
한글제외 특수문자와 공백 /[^-가-?a-zA-Z0-9/ ]/
영문자, 소문자, 숫자, "-","_" 로만 구성된 길이 2~10자리 사이의 문자열 /^[a-z0-9_-]{2,10}$/
 19자리 숫자와 "-"로 구성된 신용카드 번호 /^[0-9-]{19}$/
숫자로 구성된 4자리-4자리-4자리-4자리 유형 체크 (ex. 신용카드 번호) /^[0-9]{4}[-\s\.]?[0-9]{4}[-\s\.]?[0-9]{4}[-\s\.]?[0-9]{4}$/
영문자 대소문자, 숫자로만 구성 /[a-zA-Z0-9]/
3자리-3~4자리-4자리(사이에 문자 아무거나 가능) /^\d[3]-\d[3,4]-\d[4]$/
일반 전화번호 /^\d{2,3}-\d{3,4}-\d{4}$/;
휴대폰 번호 /^\d{3}-\d{3,4}-\d{4}$/;
맥어드레스 체크 /^[a-fA-F0-9]{2}(:[a-fA-F0-9]{2}){5}$/
IP 주소 (IPv4) /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/
일반 이메일 주소 체크 /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/
정밀한 이메일 주소 체크 /(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))/
최소 8자리 이상 영문 대소문자, 숫자, 특수문자가 각각 1개 이상 (패스워드 체크시 활용) /^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$ %^&*-]).{8,}$/
최소 8자리 이상 숫자, 특수문자가 각각 1개 이상 (패스워드 체크시 활용) /^(?=.*?[0-9])(?=.*?[#?!@$ %^&*-]).{8,}$/
URL 체크 (프로토콜 포함, ex) http://www.naver.com )
/https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#()?&//=]*)/ 
URL 체크 (프로토콜 옵션, ex) http://www.naver.com, www.naver.com)  
/(https?:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/
HTML 태그인지 체크 /^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$/
하이퍼링크 체크 /(?!<a\sname=\"([\w\s\d\-\.\#]+)\"><\/a>)<a\sname=\"([\w\s\d\-\.\#]+)\">(.*?)<\/a>/
숫자인지 체크 ^(\(?\+?[0-9]*\)?)?[0-9_\- \(\)]*$
웹사이트 링크인지 체크 <a\s+(?:[^>]*)href=\"((?:https:\/\/|http:\/\/)(?:.*?))">(?:.*?)<\/a>
년월일 (yyyy-mm-dd) 체크 /^(19|20)\d\d([- /.])(0[1-9]|1[012])\2(0[1-9]|[12][0-9]|3[01])$/
주민등록번호 체크 /^[-A-Za-z0-9_]+[-A-Za-z0-9_.]*[@]{1}[-A-Za-z0-9_]+[-A-Za-z0-9_.]*[.]{1}[A-Za-z]{1,5}$/
한글 지정 [ㄱ-ㅎㅏ-ㅣ가-힣]
허용하고자하는 특수문자 지정 [.,!?]
a-z 소문자, A-Z 대문자, 0-9 숫자, 한글 (ㄱ-ㅎ / ㅏ-ㅣ / 가-힣) [허용] [a-zA-Z0-9 ㄱ-ㅎㅏ-ㅣ가-힣]
a-z 소문자, A-Z 대문자, 0-9 숫자, 한글(ㄱ-ㅎ / ㅏ-ㅣ / 가-힣), 반점, 마침표 [허용] [a-zA-Z0-9 ㄱ-ㅎㅏ-ㅣ가-힣.,]
특수문자 및 공백 제거 [a-zA-Z0-9 ㄱ-ㅎㅏ-ㅣ가-힣]

 

 

위 정규표현식은 아래 링크 페이지에서 테스트할 수 있다.

 

정규표현식 테스트 페이지 -> https://regexr.com/50uhi

 

RegExr: Learn, Build, & Test RegEx

RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp).

regexr.com

 

 

🙏 참조 ::

반응형