[Javascript 소스]
<script type="text/javascript"> // 공백이 있나 없나 체크 function checkSpace(str) { if(str.search(/\s/) != -1) { return true; } else { return false; } } // 특수 문자가 있나 없나 체크 function checkSpecial(str) { var special_pattern = /[`~!@#$%^&*|\\\'\";:\/?]/gi; if(special_pattern.test(str) == true) { return true; } else { return false; } } // 비밀번호 패턴 체크 (8자 이상, 문자, 숫자, 특수문자 포함여부 체크) function checkPasswordPattern(str) { var pattern1 = /[0-9]/; // 숫자 var pattern2 = /[a-zA-Z]/; // 문자 var pattern3 = /[~!@#$%^&*()_+|<>?:{}]/; // 특수문자 if(!pattern1.test(str) || !pattern2.test(str) || !pattern3.test(str) || str.length < 8) { alert("비밀번호는 8자리 이상 문자, 숫자, 특수문자로 구성하여야 합니다."); return false; } else { return true; } } </script>회원가입 시, 이름이나 아이디 공백을 처리하지 않아 "홍길동"처럼 저장되어야하는데 "홍길동 "으로 저장되는 경우가 있습니다. 가입자 입장에서 무의식으로 스페이스를 치고 가입을 하면 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을 사용하여 숫자, 한글, 알파벳 이외가 나오는지 검사합니다.
자바스크립트와 자바에서 만약 문자열 사이의 공백을 지워주고 싶다면 모두 str.replace(" ",""); 의 형태로 작성해주면 됩니다. 자바에서는 지금 콘솔에 출력하는 형식으로 작성했지만, 오류검사를 위해 예외 발생으로 처리하면 됩니다. 혹은 간단하게 front에서 검사하고 싶다면 자바스크립트 검사를 넣어주도록 합니다.
아래는 자바 정규식을 만드는 문자열 설명입니다.
^ | 문자열의 시작 |
$ | 문자열의 종료 |
. | 임의의 한 문자 (문자의 종류 가리지 않음) 단, \ 는 넣을 수 없음 |
* | 앞 문자가 없을 수도 무한정 많을 수도 있음 |
+ | 앞 문자가 하나 이상 |
? | 앞 문자가 없거나 하나있음 |
[] | 문자의 집합이나 범위를 나타내며 두 문자 사이는 - 기호로 범위를 나타낸다. []내에서 ^가 선행하여 존재하면 not 을 나타낸다. |
{} | 횟수 또는 범위를 나타낸다. |
() | 소괄호 안의 문자를 하나의 문자로 인식 |
| | 패턴 안에서 or 연산을 수행할 때 사용 |
\s | 공백 문자 |
\S | 공백 문자가 아닌 나머지 문자 |
\w | 알파벳이나 숫자 |
\W | 알파벳이나 숫자를 제외한 문자 |
\d | 숫자 [0-9]와 동일 |
\D | 숫자를 제외한 모든 문자 |
\ | 정규표현식 역슬래시(\)는 확장 문자 역슬래시 다음에 일반 문자가 오면 특수문자로 취급하고 역슬래시 다음에 특수문자가 오면 그 문자 자체를 의미 |
(?i) | 앞 부분에 (?i) 라는 옵션을 넣어주면 대소문자를 구분하지 않음 |
*출처
- 자바스크립트 공백체크, 특수문자체크
- 자바 정규표현식