회원가입 시, 이름이나 아이디 공백을 처리하지 않아 "홍길동"처럼 저장되어야하는데 "홍길동 "으로 저장되는 경우가 있습니다. 가입자 입장에서 무의식으로 스페이스를 치고 가입을 하면 DB에 4글자가 들어가서 나중에 "홍길동"이라고 검색 조건을 걸었을 때 찾지 못하는 문제가 발생합니다. 따라서 공백을 제거하는 장치가 필요합니다.
제 프로젝트 기준으로 프런트인 자바스크립트에서 검사하는 방법과, 백엔드인 자바 스프링에서 검사하는 방법이 있습니다. 또한 입력된 값의 공백을 제거해주는 방법과 공백이 있을 시 오류를 반환하는 방법이 있습니다.
먼저 자바스크립트에서 공백과 특수문자를 검사하는 방법입니다.
var str = "...";
//공백만 입력된 경우
var blank_pattern = /^\s+|\s+$/g;
if(str.replace(blank_pattern, '' ) == "" ){
alert('공백만 입력되었습니다.');
}
//문자열에 공백이 있는 경우
var blank_pattern = /[\s]/g;
if( blank_pattern.test(str) == true){
alert('공백이 입력되었습니다.');
}
//특수문자가 있는 경우
var special_pattern = /[`~!@#$%^&*|\\\'\";:\/?]/gi;
if(special_pattern.test(str) == true){
alert('특수문자가 입력되었습니다.');
}
//공백 혹은 특수문자가 있는 경우
if(str.search(/\W|\s/g) > -1){
alert( '특수문자 또는 공백이 입력되었습니다.');
}
자바에서 공백과 특수문자 검사하는 방법입니다. Pattern을 사용하여 숫자, 한글, 알파벳 이외가 나오는지 검사합니다.
String str = "...";
//공백만 입력된 경우
if(str.replaceAll(" ", "").equals("")) {
System.out.println("공백만 입력되었습니다.");
}
//특수문자가 입력된 경우
String pattern = "^[0-9|a-z|A-Z|ㄱ-ㅎ|ㅏ-ㅣ|가-힣|\s]*$";
if(!Pattern.matches(pattern, str)){
System.out.println("특수문자가 입력되었습니다.");
}
//문자열에 공백 혹은 특수문자가 입력된 경우
String pattern = "^[0-9|a-z|A-Z|ㄱ-ㅎ|ㅏ-ㅣ|가-힣]*$";
if(!Pattern.matches(pattern, str)){
System.out.println("공백 혹은 특수문자가 입력되었습니다.");
}
자바스크립트와 자바에서 만약 문자열 사이의 공백을 지워주고 싶다면 모두 str.replace(" ",""); 의 형태로 작성해주면 됩니다. 자바에서는 지금 콘솔에 출력하는 형식으로 작성했지만, 오류검사를 위해 예외 발생으로 처리하면 됩니다. 혹은 간단하게 front에서 검사하고 싶다면 자바스크립트 검사를 넣어주도록 합니다.
아래는 자바 정규식을 만드는 문자열 설명입니다.
^ | 문자열의 시작 |
$ | 문자열의 종료 |
. | 임의의 한 문자 (문자의 종류 가리지 않음) 단, \ 는 넣을 수 없음 |
* | 앞 문자가 없을 수도 무한정 많을 수도 있음 |
+ | 앞 문자가 하나 이상 |
? | 앞 문자가 없거나 하나있음 |
[] | 문자의 집합이나 범위를 나타내며 두 문자 사이는 - 기호로 범위를 나타낸다. []내에서 ^가 선행하여 존재하면 not 을 나타낸다. |
{} | 횟수 또는 범위를 나타낸다. |
() | 소괄호 안의 문자를 하나의 문자로 인식 |
| | 패턴 안에서 or 연산을 수행할 때 사용 |
\s | 공백 문자 |
\S | 공백 문자가 아닌 나머지 문자 |
\w | 알파벳이나 숫자 |
\W | 알파벳이나 숫자를 제외한 문자 |
\d | 숫자 [0-9]와 동일 |
\D | 숫자를 제외한 모든 문자 |
\ | 정규표현식 역슬래시(\)는 확장 문자 역슬래시 다음에 일반 문자가 오면 특수문자로 취급하고 역슬래시 다음에 특수문자가 오면 그 문자 자체를 의미 |
(?i) | 앞 부분에 (?i) 라는 옵션을 넣어주면 대소문자를 구분하지 않음 |
*출처
- 자바 정규표현식
반응형
'학습 > Node.js' 카테고리의 다른 글
node js 기본 모듈 (0) | 2022.01.15 |
---|---|
Var, Let, Const 차이점 (0) | 2021.05.25 |
컴포넌트 ( 같은 레벨에서의 통신 ) (0) | 2021.01.02 |
컴포넌트 통신 ( v-bind와 v-on) (0) | 2021.01.02 |
인스턴스와 컴포넌트 / MVVM (0) | 2021.01.02 |