유효성 검사
모든 프로젝트들은 어느 정도 완성이 되었다면
적절한 유효성 검사가 필요합니다.
사용자에게로 부터 입력 값을 받을때 적절한 처리를 통해서
의도되는 값을 받아서 처리를 할 수 있다는 뜻 입니다.
( 주민등록번호는 xxxxxx-xxxxxxx 형식)
위와 같은 패턴을 어길 시에는
alert('올바른 형식의 주민등록번호를 입력하세요')
위와 같은 알림 창으로 사용자를 유도할 수 있습니다.
출처: https://devfalledinmac.tistory.com/14 [MAC 빠진 개발자]
출처: https://devfalledinmac.tistory.com/14 [MAC 빠진 개발자]
Matchs And Pattern
이는 자바에서 제공하는 Matchs와 Pattern 클래스를 사용하여 문자열 검증 정규식 개발이 가능합니다.
1 | import java.util.regex.Pattern; | cs |
숫자인지 검사하는 정규식 예제입니다.
1 2 3 | public boolean isNumeric(String str) { return Pattern.matches("^[0-9]*$", str); } | cs |
>> 이에 대한 문법은 나무위키에서 확인 가능합니다. <<
정규식 정리
개발에 사용한 각종 정규식을 정리한 코드입니다.
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | // 숫자 검사기 public boolean isNumeric(String str) { return Pattern.matches("^[0-9]*$", str); } // 영어 검사기 public boolean isAlpha(String str) { return Pattern.matches("^[a-zA-Z]*$", str); } // 한국어 혹은 영어 검사기 public boolean isAlphaNumeric(String str) { return Pattern.matches("[a-zA-Z0-9]*$", str); } // 한국어 검사기 public boolean isKorean(String str) { return Pattern.matches("[가-힣]*$", str); } // 대문자 검사기 public boolean isUpper(String str) { return Pattern.matches("^[A-Z]*$", str); } // 소문자 검사기 public boolean isDowner(String str) { return Pattern.matches("^[a-z]*$", str); } // 이메일 검사기 public boolean isEmail(String str) { return Pattern.matches("^[a-z0-9A-Z._-]*@[a-z0-9A-Z]*.[a-zA-Z.]*$", str); } // URL 검사기 (Http, Https 제외) public boolean isURL(String str) { return Pattern.matches("^[^((http(s?))\\:\\/\\/)]([0-9a-zA-Z\\-]+\\.)+[a-zA-Z]{2,6}(\\:[0-9]+)?(\\/\\S*)?$", str); } // phone number checker // xxx-xxx-xxxx (형식만 비교) // - 은 없어야 함. public boolean isMob(String str) { return Pattern.matches("^\\d{2,3}\\d{3,4}\\d{4}$", str); } // 일반 전화 검사기 public boolean isPhone(String str) { return Pattern.matches("^\\d{2,3}\\d{3,4}\\d{4}$", str); } // IP 검사기 public boolean isIp(String str) { return Pattern.matches("([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})", str); } // 우편번호 검사기 public boolean isPost(String str) { return Pattern.matches("^\\d{3}\\d{2}$", str); } // 주민등록번호 검사기 public boolean isPersonalID(String str) { return Pattern.matches("^(?:[0-9]{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[1,2][0-9]|3[0,1]))-[1-4][0-9]{6}$", str); } | cs |
좀 더 프로젝트에 알맞게!!
Common_Regex : 주로 쓰이는 정규식, (한영, 숫자 검사)을 재활용합니다.
Common_Check : 프로젝트에 특화된 검사합니다, 경우에 따라서는 Common_Regex을 상속합니다.
ValidCheck : 유효성 검사기, 이를 총체적으로 extends한 ValidCheck에 담아 사용이 가능합니다.
프로젝트에 따라
적절한 상속이 필요하다는 이야기이지요.
|
위와 같이 사용자 정보를 예시로 들면
이름과, 전화번호 등등의 정보를 모두 묶어 입력 형식에 맞춘 검사가 가능해집니다.
isKorean(), isPhone(), isMob(), isEmail() : Common_Regex에서 상속
checkJob() : Common_Check에서 상속 ( 승인되는 Job은 프로젝트에 따라 다를 수 있다)
1 2 3 | ValidCheck check = new ValidCheck(); check.userInfo(....) // list로 접근도 가능 | cs |
관련글
마무리
하지만 정규식은 빠르지 않기에
적절하게 사용하는 것이 현명합니다.
이후 적절한 에러코드, 에러로그 출력도 중요
※ 본 글은 개인 포트폴리오 혹은 공부용으로 사용하기 때문에, 무단 복사 유포는 금지하지만, 개인 공부 용도로는 얼마든지 사용하셔도 좋습니다
'백엔드 > Spring' 카테고리의 다른 글
[Spring] org.apache.maven.wagon:wagon-ssh:2.1 error in jdk7 (0) | 2020.06.09 |
---|---|
[SpringBoot] org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) (2) | 2020.04.15 |
[Spring Framework] STS4에서 spring legacy project가 없는 경우 (0) | 2020.04.02 |
[eGovFrame] 전자정부표준프레임워크 개발환경 설치하기 (1) | 2020.02.24 |
댓글