Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
Tags
- redis + spring boot 함께
- 자바
- 리눅스
- architecture
- 제이쿼리
- for문
- Java
- 만들면서 배우는 클린 아키텍처
- javascript
- Linux
- 엔티티 코드 치환
- aws elasticache 활용
- select
- mysql
- 초단위
- Entity Code 치환
- Tomcat
- 톰캣
- springboot+redis
- feignClient
- 자바스크립트
- js
- docker 컨테이너로 띄우기
- Docker Compose
- catalina.out
- 특수문자 치환
- 정규식
- jQuery
- insert
- sftp
Archives
- Today
- Total
꾸준하게, 차근차근
[Java] 정규식(Regular Expression) 본문
반응형
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
🙏 참조 ::
반응형
'Java' 카테고리의 다른 글
| [Java] 배열 내 요소 중복여부 체크 (0) | 2022.04.26 |
|---|---|
| [Java] 배열에 특정 값 존재(포함)여부 체크 (0) | 2022.03.19 |
| [Java] 문자열 시분초 -> 초단위로 변환(timeToSec) 구현 (0) | 2021.10.15 |
| [Java] 초단위 -> 문자열 시분초로 변환(secToTime) 구현 (0) | 2021.10.15 |
| [Java] 이모티콘(Emoji) 처리(EmojiManager, EmojiParser 클래스 사용) (0) | 2021.10.15 |