반응형
스프링 유효성 검사를 하던 중에 정규 표현식의 차이점이 있어서 정리합니다.
정규 표현식 주의할 점
javascript에서는 \s, \b 와 같이 '\'를 하나씩 사용합니다.
java에서는 \\s, \\b와 같이 '\'를 두개로 사용합니다.
javascript
var blank = /[\s]/g;
java
@Pattern(regexp = "^[가-힣]+[가-힣\\s]*$")
- javascript에서 정규표현식 모음
/*var localPhone = /^(0(2|3[1-3]|4[1-4]|5[1-5]|6[1-4]))-(\d{3,4})-(\d{4})$/;
var cellPhone = /^(?:(010-\d{4})|(01[1|6|7|8|9]-\d{3,4}))-(\d{4})$/;*/
var localPhone = /^(0(2|3[1-3]|4[1-4]|5[1-5]|6[1-4]))(\d{3,4})(\d{4})$/;
var cellPhone = /^(?:(010\d{4})|(01[1|6|7|8|9]-\d{3,4}))(\d{4})$/;
var number = /[0-9]/;
var unsignedInt = /^[1-9][0-9]*$/;
var notNumber = /[^(0-9)]/gi;
var korea_cv = /[ㄱ-ㅎ|ㅏ-ㅣ]/;
var korea = /[가-힣]/;
var koreaName = /[가-힣]/;
var special_char = /[\{\}\[\]\/?.,;:|\)*~`!^\-+<>@\#$%&\\\=\(\'\"]/;
var comma_char = /,/g;
var english = /[a-z | A-Z]/;
var blank = /[\s]/g;
var carno = /^[0-9]{2}[\s]*[가-힣]{1}[\s]*[0-9]{4}$/;
var old_carno = /^[가-힣]{2}[\s]*[0-9]{2}[\s]*[가-힣]{1}[\s]*[0-9]{4}$/;
var password =/^.*(?=.{6,20})(?=.*[0-9])(?=.*[a-zA-Z]).*$/;
var email =/([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)
|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
var domain_all =/([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)
|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
var domain_include = /^((http(s?))\:\/\/)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?$/;
var domain_exclude = /^[^((http(s?))\:\/\/)]([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?$/;
var id_check = /^[a-z | A-Z]{3,6}[0-9]{3,6}$/;
var ko_en_num_charactor = /^[가-힣a-zA-Z0-9]*$/;
var ko_en_charactor = /^[가-힣a-zA-Z]*$/;
- java에서 정규표현식 예시
@Pattern(regexp = "^[a-z | A-Z]{3,6}[0-9]{3,6}$")
private String user_id;
@Pattern(regexp="^.*(?=.{6,20})(?=.*[0-9])(?=.*[a-zA-Z]).*$")
private String password;
@Pattern(regexp = "^(01[1|6|7|8|9|0])-(\\d{3,4})-(\\d{4})$")
private String phone;
@Pattern(regexp = "^[가-힣]{2,6}$")
private String name;
@Pattern(regexp = "^[가-힣]+[가-힣\\s]*$")
private String address;
정규 표현식 사용법
표현식 |
설명 |
^ |
정규 표현식의 시작 |
$ |
정규 표현식의 종료 |
. |
임의의 한 문자(모든 문자) / 정확히 1개 문자 매칭 |
* |
히든 카드, 없을 수도 많을 수도 있음 / 0회 이상 |
+ |
앞 문자가 하나 이상 / 1회 이상 |
? |
앞 문자가 없거나 하나 / 0 또는 1개의 문자 매칭 |
[ ] |
문자의 집합이나 범위를 나타내고'-'기호로 범위 표현 |
{ } |
횟수나 범위 |
( ) |
괄호 안에 문자를 하나의 문자로 인식 |
| | 패턴 안에서 'or' 연산을 수행 |
\s, \\s | 공백 문자 포함 |
\S, \\S | 공백 문자가 아닌 나머지 문자 |
\w, \\w | 알파벳이나 숫자와 '_' 문자 |
\W, \\W | 알파벳이나 숫자와 '_' 문자가 아닌 문자 |
\d, \\d | 숫자 [0-9]와 동일 |
\D, \\D | 숫자가 아닌 모든 문자 |
\, \\ | 정규 표현식에서 확장 문자 |
g | 전체적으로 매칭 |
i | 대소문자 무시 |
m | 여러 줄 매칭 |
반응형
'개발(합니다) > 방법론' 카테고리의 다른 글
DB 버전를 관리 코드로 하는 방법 - LIQUIBASE (0) | 2021.02.05 |
---|---|
JPA 사용 시 주의 사항 (0) | 2019.01.29 |
TDD 학습 및 실습 정리9(예제연습) (0) | 2018.12.28 |
TDD 학습 및 실습 정리8(다양한시각) (0) | 2018.12.27 |
TDD 학습 및 실습 정리7(TDD작성패턴) (0) | 2018.12.27 |