Spring

12.12.(월) Spring Framework(11): 회원관리 기능(5)

콜라든포비 2022. 12. 14. 21:39

유효성 검사

유효성 검사란 회원가입 Form에 필요한 정보들이 제대로 들어갔는지 확인하는 과정이다.

쉽게 말해서 비밀번호에 영어 대문자가 들어갔는지, 특수문자가 포함이 되었는지, 확인할 수 있다.

아이디가 조건에 맞게 들어갔는지부터 확인하자. jQuery에서 정규표현식을 이용해서 구현하자.

<script>
	$(function(){
		
		// 회원가입 유효성 검사
		$("#signupForm").submit(function(){
			// 아이디 조건
			// 영어, 숫자, '_'로 이루어진 길이 6~15자리
			
			// 정규표현식
			// ^ : 처음부터 문자를 검색,	$ : 끝까지 검색
			var reg = /^[A-Za-z]{1}\w{5,14}$/	// \w : 영대소문자,숫자,_
			if(!reg.test($("#username").val())){	// 맞으면 true, 틀리면 false
				alert("아이디를 잘못 입력하였습니다.\n아이디는 6~15자리의 영문자, 숫자, _만 사용할 수 있습니다.");
				return false;
			}
		});
	});
<script>

 

정규표현식의 조건은 다음과 같다.

패턴 의미
a-zA-Z 영어알파벳(-으로 범위 지정)
ㄱ-ㅎ가-힣 한글 문자(-으로 범위 지정)
0-9 숫자(-으로 범위 지정)
. 모든 문자열(숫자, 한글, 영어, 특수기호, 공백 모두! 단, 줄바꿈X)
\d 숫자
\D 숫자가 아닌 것
\w 영어 알파벳, 숫자, 언더스코어(_)
\W /w 가 아닌 것
\s space 공백
\S space 공백이 아닌 것
\특수기호 특수기호

비밀번호와 비밀번호 확인이 일치하는지 검사해보자.

<script>
	$(function(){
		// 회원가입 유효성 검사
		$("#signupForm").submit(function(){
			// 아이디 조건
			// 영어, 숫자, '_'로 이루어진 길이 6~15자리
			
			// 정규표현식
			// ^ : 처음부터 문자를 검색,	$ : 끝까지 검색
			var reg = /^[A-Za-z]{1}\w{5,14}$/	// \w : 영대소문자,숫자,_
			if(!reg.test($("#username").val())){	// 맞으면 true, 틀리면 false
				alert("아이디를 잘못 입력하였습니다.\n아이디는 6~15자리의 영문자, 숫자, _만 사용할 수 있습니다.");
				return false;
			}
			
			// 비밀번호 확인
			if($("#password").val() != $("#v-password").val()){
				alert("비밀번호를 확인하세요.");
				return false;
			}
		});
	});
</script>

대한민국의 법정이름은 2~7글자 사이이므로, 이름 조건을 확인하자.

<script>
	$(function(){
		// 회원가입 유효성 검사
		$("#signupForm").submit(function(){
			// 아이디 조건
			// 영어, 숫자, '_'로 이루어진 길이 6~15자리
			
			// 정규표현식
			// ^ : 처음부터 문자를 검색,	$ : 끝까지 검색
			var reg = /^[A-Za-z]{1}\w{5,14}$/	// \w : 영대소문자,숫자,_
			if(!reg.test($("#username").val())){	// 맞으면 true, 틀리면 false
				alert("아이디를 잘못 입력하였습니다.\n아이디는 6~15자리의 영문자, 숫자, _만 사용할 수 있습니다.");
				return false;
			}
			
			// 비밀번호 확인
			if($("#password").val() != $("#v-password").val()){
				alert("비밀번호를 확인하세요.");
				return false;
			}
			
			// 이름 조건 : 한글로 2~7글자까지 허용
			reg = /^[가-힣]{2,7}$/
			if(!reg.test($("#name").val())){
				alert("이름은 한글 2~7자까지 허용합니다.");
				return false;
			}
		});
	});
</script>

연락처를 검사해보자.

전화번호를 3개의 박스로 나눴기 때문에 이것을 합쳐서 하나의 값으로 만들 것이다.

<script>
	$(function(){
		// 회원가입 유효성 검사
		$("#signupForm").submit(function(){
			// 아이디 조건
			// 영어, 숫자, '_'로 이루어진 길이 6~15자리
			
			// 정규표현식
			// ^ : 처음부터 문자를 검색,	$ : 끝까지 검색
			var reg = /^[A-Za-z]{1}\w{5,14}$/	// \w : 영대소문자,숫자,_
			if(!reg.test($("#username").val())){	// 맞으면 true, 틀리면 false
				alert("아이디를 잘못 입력하였습니다.\n아이디는 6~15자리의 영문자, 숫자, _만 사용할 수 있습니다.");
				return false;
			}
			
			// 비밀번호 확인
			if($("#password").val() != $("#v-password").val()){
				alert("비밀번호를 확인하세요.");
				return false;
			}
			
			// 이름 조건 : 한글로 2~7글자까지 허용
			reg = /^[가-힣]{2,7}$/
			if(!reg.test($("#name").val())){
				alert("이름은 한글 2~7자까지 허용합니다.");
				return false;
			}
			
			// 연락처 검사
			var tel = $("#tel1").val()+"-"+$("#tel2").val()+"-"+$("#tel3").val();
			console.log("tel -> ", tel);	// 브라우저 콘솔에 전화번호 표시
			// 지역번호 : 010, 02, 031, 032, 041, 042
			reg = /^(010|02|031|032|041|042)-[0-9]{3,4}-[0-9]{4}$/
			if(!reg.test(tel)){
				alert("전화번호를 확인하세요.");
				return false;
			}
		});
	});
</script>

이메일도 조건에 맞게 작성되었나 확인해보자.

이메일은 필수 입력 항목이 아니기 때문에, 무언가가 입력되었을때만 검사를 실행하도록 한다.

<script>
		// 회원가입 유효성 검사
		$("#signupForm").submit(function(){
			// 아이디 조건
			// 영어, 숫자, '_'로 이루어진 길이 6~15자리
			
			// 정규표현식
			// ^ : 처음부터 문자를 검색,	$ : 끝까지 검색
			var reg = /^[A-Za-z]{1}\w{5,14}$/	// \w : 영대소문자,숫자,_
			if(!reg.test($("#username").val())){	// 맞으면 true, 틀리면 false
				alert("아이디를 잘못 입력하였습니다.\n아이디는 6~15자리의 영문자, 숫자, _만 사용할 수 있습니다.");
				return false;
			}
			
			// 비밀번호 확인
			if($("#password").val() != $("#v-password").val()){
				alert("비밀번호를 확인하세요.");
				return false;
			}
			
			// 이름 조건 : 한글로 2~7글자까지 허용
			reg = /^[가-힣]{2,7}$/
			if(!reg.test($("#name").val())){
				alert("이름은 한글 2~7자까지 허용합니다.");
				return false;
			}
			
			// 연락처 검사
			var tel = $("#tel1").val()+"-"+$("#tel2").val()+"-"+$("#tel3").val();
			console.log("tel -> ", tel);	// 브라우저 콘솔에 전화번호 표시
			// 지역번호 : 010, 02, 031, 032, 041, 042
			reg = /^(010|02|031|032|041|042)-[0-9]{3,4}-[0-9]{4}$/
			if(!reg.test(tel)){
				alert("전화번호를 확인하세요.");
				return false;
			}
			
			// 이메일 검사
			// smg1024@naver.com	smg1024@cau.ac.kr
			if($("#email").val()!=""){	// 이메일은 필수 입력 항목이 아님
				// 이메일은 다른 사이트의 이메일을 가져오는 것이기 때문에 최대한 널널한 조건으로 설정
				// ? : 있거나 없거나
				reg = /^\w{6,15}[@][a-z0-9]{2,8}[.][a-z]{1,3}([.][a-z]{1,3})?$/
				if(!reg.test($("#email").val())){
					alert("잘못된 이메일 주소입니다.");
					return false;
				}
			}
		});
	});
</script>
기호 의미
? 최대 한번(없음
* 없거나 있거나 (없음
+ 최소 한개(한개
{n} n개
{Min,} 최소 Min개 이상
{Min, Max} 최소 Min개 이상, 최대 Max개 이하

아이디 중복확인이 제대로 되었는지 확인해주자.

<script>
	$(function(){
		// 회원가입 유효성 검사
		$("#signupForm").submit(function(){
			// 아이디 조건
			// 영어, 숫자, '_'로 이루어진 길이 6~15자리
			
			// 정규표현식
			// ^ : 처음부터 문자를 검색,	$ : 끝까지 검색
			var reg = /^[A-Za-z]{1}\w{5,14}$/	// \w : 영대소문자,숫자,_	
			if(!reg.test($("#username").val())){	// 맞으면 true, 틀리면 false
				alert("아이디를 잘못 입력하였습니다.\n아이디는 6~15자리의 영문자, 숫자, _만 사용할 수 있습니다.");
				return false;
			}
			
			// 비밀번호 확인
			if($("#password").val() != $("#v-password").val()){
				alert("비밀번호를 확인하세요.");
				return false;
			}
			
			// 이름 조건 : 한글로 2~7글자까지 허용
			reg = /^[가-힣]{2,7}$/
			if(!reg.test($("#name").val())){
				alert("이름은 한글 2~7자까지 허용합니다.");
				return false;
			}
			
			// 연락처 검사
			var tel = $("#tel1").val()+"-"+$("#tel2").val()+"-"+$("#tel3").val();
			console.log("tel -> ", tel);	// 브라우저 콘솔에 전화번호 표시
			// 지역번호 : 010, 02, 031, 032, 041, 042
			reg = /^(010|02|031|032|041|042)-[0-9]{3,4}-[0-9]{4}$/
			if(!reg.test(tel)){
				alert("전화번호를 확인하세요.");
				return false;
			}
			
			// 이메일 검사
			// smg1024@naver.com	smg1024@cau.ac.kr
			if($("#email").val()!=""){	// 이메일은 필수 입력 항목이 아님
				// 이메일은 다른 사이트의 이메일을 가져오는 것이기 때문에 최대한 널널한 조건으로 설정
				// ? : 있거나 없거나
				reg = /^\w{6,15}[@][a-z0-9]{2,8}[.][a-z]{1,3}([.][a-z]{1,3})?$/
				if(!reg.test($("#email").val())){
					alert("잘못된 이메일 주소입니다.");
					return false;
				}
			}
			
			// 아이디 중복확인 검사
			if($("#idCheckStatus").val()=="N"){
				alert("아이디 중복 확인하세요.");
				return false;
			}
		});
	});
</script>

이렇게 유효성 검사를 실행해서 DB에 잘못된 정보가 등록되는 것을 방지할 수 있다.