본문 바로가기
JSP/JSP기초

JSP(validation) 정규식표현 정리

by 미눅스[멘토] 2023. 7. 6.
728x90

validation01.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Validation</title>
<script type="text/javascript">
	function checkform(){
		console.log("개똥이");
		let id = document.loginForm.id.value;//a001
		let passwd = document.loginForm.passwd.value; //java
		console.log("id :" + id + ", passwd : " + passwd);
	}
	
</script>

</head>
<body>
<!--  body와 body 사이를 document라고 함 -->
	<form name="loginForm">
		<p>아이디 : <input type="text" name="id" /></p>
		<p>비밀번호 : <input type="password" name="passwd" /></p>
		<!-- checkform() : 핸들러함수 -->
		<p><input type="button" value="전송" onclick="checkform()" /></p>
	</form>
</body>
</html>

validation01.jsp 결과


validation02.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Validation</title>
<script type="text/javascript">
	//핸들러 함수
	function checkform(){
		let form = document.loginForm;
		if(form.id.value==""){
			alert("아이디를 입력해 주세요");
			form.id.focus();	//해당 입력 항목에 커서가 위치함
			return false;//함수 멈춤
		}else if(form.passwd.value==""){
			alert("비밀번호를 입력해 주세요")
			form.passwd.focus(); //커서를 위치함
			return false;//여기서 멈춰
		}
		//위의 분기문을 잘 통과했다면....
		form.submit(); //validation02_process.jsp를 요청
	}
</script>

</head>
<body>
<!--  body와 body 사이를 document라고 함 -->
	<!-- 요청 URL : validation02_process.jsp
		 요청파라미터(HTTP파라미터, QuertString) : {id=a001, passwd=java}
	 -->
	<form name="loginForm" action="validation02_process.jsp" method="post">
		<p>아이디 : <input type="text" name="id" /></p>
		<p>비밀번호 : <input type="password" name="passwd" /></p>
		<!-- checkform() : 핸들러함수 -->
		<p>아이디 : <input type="button" value="전송" onclick="checkform()" /></p>
	</form>
</body>
</html>

validation02.jsp 결과

 

 

validation02_process.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<h3>입력에 성공했습니다.</h3>

<%
	//문자 인코딩 유형 처리
	request.setCharacterEncoding("utf-8");
	//request객체 : JSP 내장객체(session, application, out, response, pageContext)
	String id = request.getParameter("id"); //a001
	String passwd = request.getParameter("passwd"); //java
%>

<p>아이디 : <%=id %></p>
<p>비밀번호 : <%=passwd %></p>

validation02_process.jsp 결과

 

 


 

validation03.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Validation</title>
<script type="text/javascript">
	function checkLogin(){
		let form = document.loginForm;
		//아이디 : 4~12자 사이로 입력
		if(form.id.value.length<4 || form.id.value.length>12){
			alert("아이디는 4~12자 이내로 입력 가능합니다.");
			form.id.select(); //focus()
			return; //false 생략 가능. 함수 종료.
		}
		//비밀번호 : 4자 이상으로 입력
		//else if를 안 쓴 이유? 모두 통과해야 하므로
		if(form.passwd.value.length<4){
			alert("비밀번호는 4자 이상으로 입력해야 합니다.");
			form.passwd.select();//커서를 위치함
			return;
		}
		//모두 통과 했다면
		form.submit();	//validation03_process.jsp를 요청
	}
</script>
</head>
<body>
<!--  body와 body 사이를 document라고 함 -->
	<!-- 요청URL : validation03_process.jsp
		  요청파라미타 : {id=a001, passwd=java}
		  요청방식 : post
	-->
	
	<form name="loginForm" action="validation03_process.jsp" method="post">
		<p>아이디 : <input type="text" name="id" /></p>
		<p>비밀번호 : <input type="password" name="passwd" /></p>
		<!-- checkform() : 핸들러함수 -->
		<p>아이디 : <input type="button" value="전송" onclick="checkLogin()" /></p>
	</form>
</body>
</html>

validation03.jsp 결과

 

 

 

validation03_process.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<h3>입력에 성공했습니다.</h3>

<%
	//문자 인코딩 유형 처리
	request.setCharacterEncoding("utf-8");
	//request객체 : JSP 내장객체(session, application, out, response, pageContext)
	String id = request.getParameter("id"); //a001
	String passwd = request.getParameter("passwd"); //java
%>

<p>아이디 : <%=id %></p>
<p>비밀번호 : <%=passwd %></p>

 

validation03_process.jsp


 

validation04.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Validation</title>
<script type="text/javascript">
	function checkForm(){
		//"1admin".substr(0,1) => 1
		//33개똥이
		//It is Not a Number : 그것은 숫자가 아니다(isNaN)가 아니다(!)=> 숫자다.
		let form = document.frm;
		if(!isNaN(form.name.value.substr(0,1))){
			//숫자라면
			alert("이름은 숫자로 시작할 수 없습니다.");
			form.name.select();
			return;
		}
		//통과했다면
		form.submit();	//form에 action없음 => 현재URL을 요청, method없음 => 기본get방식
	}
</script>
</head>
<body>
<!--  body와 body 사이를 document라고 함 -->
	<form name="frm">
		<p>이름 : <input type="text" name="name" /></p>
		<!-- checkform() : 핸들러함수 -->
		<p><input type="button" value="전송" onclick="checkForm()" /></p>
	</form>
</body>
</html>

validation04.jsp 결과

 


validation04_2.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Validation</title>
<script type="text/javascript">
	function checkLogin(){
		let form = document.loginForm;
		//1) 아이디는 영문 소문자만 입력가능
		//form.id.value : admin (length:5)
		for(i=0; i<form.id.value.length; i++){
			let ch = form.id.value.charAt(i); //a(0) -> d(1) -> m(2) -> i(3) -> n(4)
			if((ch<'a'||ch>'z')&&(ch>'A'||ch<'Z')&&(ch>'0'||ch<'9')){
				alert("아이디는 영문 소문자만 입력 가능합니다.");
				form.id.select();
				return; //함수 멈춤. break는 for문을 멈추는 반면에, return은 함수 자체를 멈춤
			}
		}//end for
		//2) 비밀번호는 숫자만 입력 가능
		//이것은 숫자가 아니다(isNaN)
		if(isNaN(form.passwd.value)){
			alert("비밀번호는 숫자만 입력 가능합니다.");
			form.passwd.select();
			return; //함수 멈춤
		}
		
		//아이디 및 비밀번호 유효성검사(validation)을 통과 시
		form.submit();	//폼 페이지에 입력된 데이터 값을 서버로 전송(request객체에 담사서)
	}
</script>
</head>
<body>
<!--  body와 body 사이를 document라고 함 -->
	<!-- 요청URL : validation03_process.jsp
		  요청파라미타 : {id=a001, passwd=java}
		  요청방식 : post
	-->
	
	<form name="loginForm" action="validation03_process.jsp" method="post">
		<p>아이디 : <input type="text" name="id" /></p>
		<p>비밀번호 : <input type="password" name="passwd" /></p>
		<!-- checkform() : 핸들러함수 -->
		<p>아이디 : <input type="button" value="전송" onclick="checkLogin()" /></p>
	</form>
</body>
</html>

validation04_2.jsp결과

 

 


 

validation04_3.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Validation</title>
<script type="text/javascript">
	function checkForm(){
		//정규표현식 선언 /로 시작, /로 닫음
		let regExp =/Java/i;	//i : ignore 대소문자를 구별하지 않음
		let str = document.frm.name.value;	//Java Server Page
		let = result = regExp.exec(str);	//글자 찾음(추출). Java
		
		console.log("result : " + result);
	}
</script>
</head>
<body>
<!--  body와 body 사이를 document라고 함 -->
	<form name="frm">
		<p>이름 : <input type="text" name="name" value="Java Server Page" /></p>
		<!-- checkform() : 핸들러함수 -->
		<p><input type="button" value="전송" onclick="checkForm()" /></p>
	</form>
</body>
</html>

validation04_3.jsp 결과

 

 


 

 

validation04_4.jsp 

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Validation</title>
<script type="text/javascript">
	function checkForm(){
		//이름은 숫자로 시작할 수 없음
		let str = document.frm.name.value; //1개똥아
		//정규표현식 생성
		//^ : 문자열이 시작. [a-z] : a~z사이의 문자열 중 한 글자
		let regExp = /^[a-z|A-Z|ㄱ-ㅎ|ㅏ-ㅣ|가-힣]/;
		
		if(!regExp.test(str)){	//테스트 통과 : true, 실패 : false
			alert("이름은 숫자로 시작할 수 없습니다.");
			return; //함수를 종료
		}
	}
</script>
</head>
<body>
<!--  body와 body 사이를 document라고 함 -->
	<form name="frm">
		<p>이름 : <input type="text" name="name"/></p>
		<!-- checkform() : 핸들러함수 -->
		<p><input type="button" value="전송" onclick="checkForm()" /></p>
	</form>
</body>
</html>

validation04_4.jsp결과


validation05.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Validation</title>
<script type="text/javascript">
	function checkLogin(){
		//1) 아이디는 문자로 시작
		let regExpId = /^[a-z|A-Z|ㄱ-ㅎ|ㅏ-ㅣ|가-힣]/;
		//2) 이름은 한글만 입력. 시작도 한글 끝도 한글. ^한글$
		// +: 한번 이상, *: 0번 이상
		let regExpName = /^[가-힣]*$/;
		//3) 비밀번호는 숫자만 입력. ^숫자$
		let regExpPasswd = /^[0-9]*$/;
		//4) 연락처 형식 준수(010-111-2222, 010-1111,2222)
		// \d : 숫자
		// {3} : 딱 3회 반복. \d{3,4} : 숫자가 3이상 4이하 반복
		let regExpPhone = /^\d{3}-\d{3,4}-\d{4}$/;
		//5) 이메일 형식 준수(tester-_.2a@korea_3.ac.kr)
		// ^ : 시작 / $ : 끝 / ? : 아몰랑(있어도 그만 없어도 그만) / * : 0이상 반복 / {2,3} : 2이상 3이하
		// [a-z] : a부터 z사이 영소문자 중 한 글자
		let refExpMail = 
		/^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i;
		//form : dbject
		let form = document.Member;
		
		let id = form.id.value;//아이디
		let name = form.name.value; //이름
		let passwd = form.passwd.value;//비밀번호
		let phone = form.phone1.value + "-" +
					form.phone2.value + "-" +
					form.phone3.value; //연락처
		let email = form.email.value;  //이메일
		
		//1) 아이디는 문자로 시작
		if(!regExpId.test(id)){
			alert("아이디는 문자로 시작해주세요")
			form.id.select();
			return;
		}
		//2) 이름은 한글만 입력
		if(!regExpName.test(name)){
			alert("이름은 한글만 입력해주세요")
			return;
		}
		//3) 비밀번호는 숫자만 입력
		if(!regExpPasswd.test(passwd)){
			alert("비밀번호는 숫자만 입력해주세요")
			return;
		}
		//4) 연락처 형식중수(010-111-2222, 010-1111-2222)
		if(!regExpPhone.test(phone)){
			alert("연락처를 확인해주세요");
			return;
		}
		//5) 이메일 형식 준수(tester-_.2a@korea_3.ac.kr)
		if(!refExpMail.test(email)){
			alert("이메일 형식을 확인해주세요");
			return;
		}
		//유효성검사(validation)통과
		form.submit();
	}
</script>
</head>
<body>
<!--  body와 body 사이를 document라고 함 -->
	<!-- 요청URL : validation03_process.jsp
		  요청파라미타 : {id=a001, passwd=java}
		  요청방식 : post
	-->
	
	<form name="Member" action="validation05_process.jsp" method="post">
		<p>아이디 : <input type="text" name="id" /></p>
		<p>비밀번호 : <input type="password" name="passwd" /></p>
		<p>이름 : <input type="text" name="name" /></p>
		<p>연락처 :
			<select name="phone1">
				<option value="010">010</option>
				<option value="011">011</option>
				<option value="016">016</option>
				<option value="017">017</option>
				<option value="019">019</option>
			</select>-
			<input type="text" maxlength="4" size="4" name="phone2" /> -
			<input type="text" maxlength="4" size="4" name="phone3" />
		</p>
		<p>이메일 : <input type="text" name="email" /></p>
		<!-- checkform() : 핸들러함수 -->
		<p><input type="button" value="가입하기" onclick="checkLogin()" /></p>
	</form>
</body>
</html>

 

'JSP > JSP기초' 카테고리의 다른 글

JSP(다국어처리)JSTL 사용해서 번들Bundle 사용하는 방법  (0) 2023.07.07
[Javascript]다국어처리 국제화  (0) 2023.07.07
include 사용방법  (0) 2023.06.23
템플릿 만들기  (0) 2023.06.22
JSP3총사 230622  (0) 2023.06.22