Search

μœ νš¨μ„± 검사 & μ •κ·œ ν‘œν˜„μ‹

μœ νš¨μ„± 검사

: λ°μ΄ν„°μ˜ μ μ ˆμ„±μ„ ν™•μΈν•˜λŠ” κ³Όμ •

μ •κ·œ ν‘œν˜„μ‹

: λ¬Έμžμ—΄μ˜ νŠΉμ • ν˜•νƒœλ₯Ό μ°Ύμ•„λ‚΄κΈ° μœ„ν•œ νŒ¨ν„΄ ν‘œν˜„μ‹
let λ³€μˆ˜λͺ… = /μ •κ·œ ν‘œν˜„μ‹/[Flag]
JavaScript
볡사
let λ³€μˆ˜λͺ… = new RegExp('μ •κ·œ ν‘œν˜„μ‹' , ['Flag'] )
JavaScript
볡사

flag

β€’
i : ignore case : λŒ€λ¬Έμž μ†Œλ¬Έμžλ₯Ό ꡬ뢄없이 κ²€μΆœ
β€’
g : global : λ¬Έμžμ—΄μ˜ λ‚΄μ˜ λͺ¨λ“  νŒ¨ν„΄ κ²€μΆœ
β€’
m : multi : λ¬Έμžμ—΄μ˜ μ€„λ°”κΏˆμ΄ μžˆλŠ”μ§€ κΉŒμ§€λ„ κ²€μΆœ
ꡬ문
μ„€λͺ…
예제
문자
일반 λ¬ΈμžλŠ” 자체둜 λ§€μΉ˜λ©λ‹ˆλ‹€.
abcλŠ” "abc"와 맀치
.
μ–΄λ–€ 문자 ν•˜λ‚˜μ™€ λ§€μΉ˜λ©λ‹ˆλ‹€.
a.cλŠ” "abc"와 맀치
\d
숫자(digit)와 λ§€μΉ˜λ©λ‹ˆλ‹€.
\d+λŠ” "123"와 맀치
\D
μˆ«μžκ°€ μ•„λ‹Œ λ¬Έμžμ™€ λ§€μΉ˜λ©λ‹ˆλ‹€.
\D+λŠ” "abc"와 맀치
\w
문자(word character)와 λ§€μΉ˜λ©λ‹ˆλ‹€.
\w+λŠ” "hello"와 맀치
\W
λ¬Έμžκ°€ μ•„λ‹Œ λ¬Έμžμ™€ λ§€μΉ˜λ©λ‹ˆλ‹€.
\W+λŠ” "123!"와 맀치
\s
곡백 λ¬Έμžμ™€ λ§€μΉ˜λ©λ‹ˆλ‹€.
\s+λŠ” " \t\n"와 맀치
\S
곡백이 μ•„λ‹Œ λ¬Έμžμ™€ λ§€μΉ˜λ©λ‹ˆλ‹€.
\S+λŠ” "abc123"와 맀치
^
λ¬Έμžμ—΄μ˜ μ‹œμž‘κ³Ό λ§€μΉ˜λ©λ‹ˆλ‹€.
^abcλŠ” "abcdef"와 λ§€μΉ˜ν•˜μ§€ μ•ŠμŒ
$
λ¬Έμžμ—΄μ˜ 끝과 λ§€μΉ˜λ©λ‹ˆλ‹€.
xyz$λŠ” "xyz123"와 λ§€μΉ˜ν•˜μ§€ μ•ŠμŒ
[abc]
λŒ€κ΄„ν˜Έ μ•ˆμ˜ μ–΄λ–€ 문자(a, b, c)와 λ§€μΉ˜λ©λ‹ˆλ‹€.
[aeiou]λŠ” "apple"μ—μ„œ "a"와 맀치
[^abc]
λŒ€κ΄„ν˜Έ μ•ˆμ˜ μ–΄λ–€ 문자(a, b, c)λ₯Ό μ œμ™Έν•œ λ¬Έμžμ™€ λ§€μΉ˜λ©λ‹ˆλ‹€.
[^aeiou]λŠ” "apple"μ—μ„œ "p", "l" λ“±κ³Ό 맀치
[a-z]
aλΆ€ν„° zκΉŒμ§€ λ²”μœ„μ˜ λ¬Έμžμ™€ λ§€μΉ˜λ©λ‹ˆλ‹€.
[a-z]+λŠ” "hello"μ—μ„œ "hello"와 맀치
(x)
그룹을 λ‚˜νƒ€λ‚΄λ©°, xλ₯Ό λ§€μΉ˜ν•©λ‹ˆλ‹€.
(abc)+λŠ” "abcabc"와 맀치
x|y
x λ˜λŠ” y λ§€μΉ˜ν•©λ‹ˆλ‹€
x|y λŠ” β€œx” λ˜λŠ” β€œy” 와 맀치
x?
xκ°€ 0 λ˜λŠ” 1회 λ‚˜νƒ€λ‚  λ•Œ λ§€μΉ˜ν•©λ‹ˆλ‹€.
ab?cλŠ” "abc"와 "ac"와 맀치
x*
xκ°€ 0회 이상 λ‚˜νƒ€λ‚  λ•Œ λ§€μΉ˜ν•©λ‹ˆλ‹€.
ab*cλŠ” "ac", "abc", "abbc" λ“±κ³Ό 맀치
x+
xκ°€ 1회 이상 λ‚˜νƒ€λ‚  λ•Œ λ§€μΉ˜ν•©λ‹ˆλ‹€.
ab+cλŠ” "abc", "abbc" λ“±κ³Ό 맀치
x{m}
xκ°€ μ •ν™•νžˆ m회 λ‚˜νƒ€λ‚  λ•Œ λ§€μΉ˜ν•©λ‹ˆλ‹€.
a{2}λŠ” "aa"와 맀치
x{m, n}
xκ°€ μ΅œμ†Œ mνšŒμ—μ„œ μ΅œλŒ€ nνšŒκΉŒμ§€ λ‚˜νƒ€λ‚  λ•Œ λ§€μΉ˜ν•©λ‹ˆλ‹€.
a{1,3}λŠ” "a", "aa", "aaa"와 맀치
x{m,}
xκ°€ μ΅œμ†Œ m회 이상 λ‚˜νƒ€λ‚  λ•Œ λ§€μΉ˜ν•©λ‹ˆλ‹€.
a{2,}λŠ” "aa", "aaa" λ“±κ³Ό 맀치
x
y
x λ˜λŠ” y와 λ§€μΉ˜λ©λ‹ˆλ‹€.

μ •κ·œν‘œν˜„μ‹ λ©”μ†Œλ“œ

β€’
test( ) : λ¬Έμžμ—΄μ΄ μ§€μ •ν•œ μ •κ·œν‘œν˜„μ‹μ— λΆ€ν•©ν•œμ§€ μ—¬λΆ€ λ°˜ν™˜ (true/false)
β€’
exec( ) : λ¬Έμžμ—΄μ΄ μ§€μ •ν•œ μ •κ·œν‘œν˜„μ‹μ— λΆ€ν•©ν•œ λ¬Έμžμ—΄μ„ μΆ”μΆœν•˜μ—¬ λ°˜ν™˜

아이디 검사

β€’
μ˜μ–΄, ν•œκΈ€, 숫자만 λΆ€ν•©
/^[a-zA-Z0-9γ„±-γ…Žγ…-γ…£κ°€-힣]+$/
JavaScript
볡사
let regExpId = /^[a-zA-Z0-9γ„±-γ…Žγ…-γ…£κ°€-힣]+$/
Java
볡사

이름 검사

β€’
ν•œκΈ€λ§Œ λΆ€ν•©
/^[κ°€-힣]*$/
JavaScript
볡사
let regExpName = /^[κ°€-힣]*$/
Java
볡사

μ „ν™”λ²ˆν˜Έ 검사

β€’
XXX-XXX-XXXX λ˜λŠ” XXX-XXXX-XXXX 만 λΆ€ν•©
/^\d{3}-\d{3,4}-\d{4}$/
JavaScript
볡사
let regExpPhone = /^\d{3}-\d{3,4}-\d{4}$/
Java
볡사

이메일 검사

β€’
(μ²«κΈ€μž 영문자)(μ˜μ–΄,숫자, _ - . )@(μ˜μ–΄).(μ˜μ–΄)
/^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i
JavaScript
볡사
let regExpEmail = /^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i
Java
볡사

λΉ„λ°€λ²ˆν˜Έ 검사

β€’
μ˜μ–΄, 숫자 포함 8κΈ€μž 이상 (특수문자 ν—ˆμš©)
/^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/
JavaScript
볡사
let passwordPattern = /^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/;
JavaScript
볡사

μ˜ˆμ‹œμ½”λ“œ

β€’
Java λΌλŠ” 문자 λŒ€μ†Œλ¬Έμž ꡬ뢄 없이 검사
β€’
아이디, 이름, μ „ν™”λ²ˆν˜Έ, 이메일 νŒ¨ν„΄ 검사
β€’
둜그인 μœ νš¨μ„± 검사
β€’
νšŒμ›κ°€μž… μœ νš¨μ„± 검사

Java λΌλŠ” 문자 λŒ€μ†Œλ¬Έμž ꡬ뢄 없이 검사

β€’
regexp01.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>μ •κ·œν‘œν˜„μ‹</title> </head> <body> <h1>μ •κ·œν‘œν˜„μ‹</h1> <form name="form" onsubmit="return checkForm()"> <p>제λͺ© : <input type="text" name="title" /></p> <p><input type="submit" value="등둝" /></p> </form> <script> function checkForm() { let regExp = /Java/i // Java λΌλŠ” λ¬Έμžμ—΄μ„ λŒ€μ†Œλ¬Έμž ꡬ뢄없이 검사 let str = document.form.title.value let result = regExp.exec(str) // exec() : μ •κ·œ ν‘œν˜„μ‹μ— λΆ€ν•©ν•œ λ¬Έμžμ—΄ λ°˜ν™˜ // test() : μ •κ·œ ν‘œν˜„μ‹μ— λΆ€ν•©ν•œμ§€ μ—¬λΆ€λ₯Ό λ°˜ν™˜(true/false) if( regExp.test(str) ) { alert(result[0]) } return false } </script> </body> </html>
HTML
볡사

아이디, 이름, μ „ν™”λ²ˆν˜Έ, 이메일 νŒ¨ν„΄ 검사

β€’
regexp02.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>μ •κ·œν‘œν˜„μ‹</title> </head> <body> <h1>μ •κ·œν‘œν˜„μ‹</h1> <form name="form" onsubmit="return checkForm()"> <p>제λͺ© : <input type="text" name="title" /> </p> <p>아이디 : <input type="text" name="id" /> </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>이메일 : <input type="text" name="email" /> </p> <p><input type="submit" value="등둝" /> </p> </form> <script> // νšŒμ›κ°€μž… μ •κ·œ ν‘œν˜„μ‹μœΌλ‘œ μœ νš¨μ„± 검사 function checkForm() { // 아이디 νŒ¨ν„΄ : 영문자, ν•œκΈ€ μ‹œμž‘ let regExpId = /^[a-zA-Zγ„±-γ…Žγ…-γ…£κ°€-힣]+$/ // 이름 νŒ¨ν„΄ : ν•œκΈ€ let regExpName = /^[κ°€-힣]*$/ // μ „ν™”λ²ˆν˜Έ νŒ¨ν„΄ : [3자리 숫자]-[3~4자리 숫자]-[4자리 숫자] let regExpPhone = /^\d{3}-\d{3,4}-\d{4}$/ // 이메일 νŒ¨ν„΄ [숫자,영문자]@[숫자,영문자].~~.[영문자2~3자리] // OOO@OOOO.com // OOO@OOOO.co.kr // OOO@OOOO.ac.kr // OOO@OOOO.org let regExpEmail = /^[0-9a-zA-Z](-_\.)?[0-9a-zA-Z]*@[0-9a-zA-Z](-_\.)?[0-9a-zA-Z]*\.[a-zA-Z]{2,3}$/i // 뢄석 - /^[0-9a-zA-Z](-_\.)?[0-9a-zA-Z]* // /^[0-9a-zA-Z](-_\.)?[0-9a-zA-Z]* // ^[0-9a-zA-Z] : μ‹œμž‘μ€ 숫자 λ˜λŠ” μ˜μ–΄ // (-_\.)? : 쀑간에 -, _, . 0 λ˜λŠ” 1회 κ°€λŠ₯ // [0-9a-zA-Z]* : κ·Έ ν›„μ—λŠ” 숫자 λ˜λŠ” μ˜μ–΄κ°€ 0 λ˜λŠ” 1νšŒμ΄μƒ // 전체 뢄석 // (1) : /^[0-9a-zA-Z](-_\.)?[0-9a-zA-Z]* // (2) : @ // (3) : [0-9a-zA-Z](-_\.)?[0-9a-zA-Z]* // (4) : . // (5) : [a-zA-Z]{2,3}$/i // κ°€λŠ₯ // joeun // joeun1004 // joeun_1004 // joeun-1004 // 1004joeun // 1004-joeun // joeun.1004 // λΆˆκ°€λŠ₯ // -joeun // _jouen let id = form.id.value let name = form.name.value let phone = form.phone1.value + "-" + form.phone2.value + "-" + form.phone3.value let email = form.email.value // test() : λΆ€ν•©O-true, λΆ€ν•©X-false if( !regExpId.test(id) ) { alert('아이디λ₯Ό ν˜•μ‹μ— 맞게 μž…λ ₯ν•΄μ£Όμ„Έμš”') return false } if( !regExpName.test(name) ) { alert('이름 ν˜•μ‹μ— 맞게 μž…λ ₯ν•΄μ£Όμ„Έμš”') return false } if( !regExpPhone.test(phone) ) { alert('μ „ν™”λ²ˆν˜Έ ν˜•μ‹μ— 맞게 μž…λ ₯ν•΄μ£Όμ„Έμš”') return false } if( !regExpEmail.test(email) ) { alert('이메일 ν˜•μ‹μ— 맞게 μž…λ ₯ν•΄μ£Όμ„Έμš”') return false } } </script> </body> </html>
HTML
볡사

둜그인 μœ νš¨μ„± 검사

β€’
validation01.jsp
β€’
validation01_pro.jsp
β€’
validation01.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>아이디 λΉ„λ°€λ²ˆν˜Έ μœ νš¨μ„± 검사</title> </head> <body> <h1>둜그인</h1> <h3>μœ νš¨μ„± 검사</h3> <!-- onsubmit="return μ—¬λΆ€" - μ—¬λΆ€ : true 이면, submit(μš”μ²­μ „μ†‘) false 이면, sumbmit μ•ˆ 함 --> <form name="loginForm" onsubmit="return checkLogin()" action="validation01_pro.jsp" method="post"> <p>아이디 : <input type="text" name="id" maxlength="20" /></p> <p>λΉ„λ°€λ²ˆν˜Έ : <input type="password" name="pw" /></p> <p><input type="submit" value="둜그인"></p> </form> <script> // 둜그인 μœ νš¨μ„± 검사 function checkLogin() { // alert("둜그인 μš”μ²­") let form = document.loginForm // name이 loginForm 인 폼 μš”μ†Œλ₯Ό κ°€μ Έμ˜΄ let id = form.id.value let pw = form.pw.value // alert(id) // alert(pw) // 1. μ•„μ΄λ””λŠ” ν•„μˆ˜κ°’, 6~20자 이내 // 아이디 μž…λ ₯μ—¬λΆ€ 검증 if( id == "" ) { alert('아이디λ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš”') form.id.focus() // id input νƒœκ·Έμ— 포컀슀 return false } // 아이디 κΈ€μž 수 검증 if( id.length < 6 || id.length > 20 ) { alert('μ•„μ΄λ””λŠ” 6~20자 μ΄λ‚΄λ‘œ μž…λ ₯ κ°€λŠ₯ν•©λ‹ˆλ‹€.') form.id.select() // id μž…λ ₯ 값을 선택 return false } // 2. λΉ„λ°€λ²ˆν˜ΈλŠ” ν•„μˆ˜κ°’, 6자 이상 // λΉ„λ°€λ²ˆν˜Έ μž…λ ₯μ—¬λΆ€ 검증 if( pw == "" ) { alert('λΉ„λ°€λ²ˆν˜Έλ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš”') form.pw.focus() // pw input νƒœκ·Έμ— 포컀슀 return false } // λΉ„λ°€λ²ˆν˜Έ κΈ€μž 수 검증 if( pw.length < 6 ) { alert('λΉ„λ°€λ²ˆν˜ΈλŠ” 6자 μ΄μƒμœΌλ‘œ μž…λ ₯ν•΄μ•Όν•©λ‹ˆλ‹€.') form.id.select() // pw μž…λ ₯ 값을 선택 return false } return true } </script> </body> </html>
HTML
볡사
β€’
validation01_pro.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>μœ νš¨μ„± 검사</title> </head> <body> <h3>λ‘œκ·ΈμΈμ— μ„±κ³΅ν–ˆμŠ΅λ‹ˆλ‹€.</h3> <% request.setCharacterEncoding("UTF-8"); String id = request.getParameter("id"); String pw = request.getParameter("pw"); %> <p>아이디 : <%= id %> </p> <p>λΉ„λ°€λ²ˆν˜Έ : <%= pw %> </p> </body> </html>
HTML
볡사

νšŒμ›κ°€μž… μœ νš¨μ„± 검사

β€’
validation02.jsp
β€’
validation02_pro.jsp
β€’
validation02.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <h1>νšŒμ›κ°€μž…</h1> <h3>μœ νš¨μ„± 검사</h3> <form name="joinForm" onsubmit="return checkJoin()" action="validation02_pro.jsp" method="post"> <p>아이디 : <input type="text" name="id" maxlength="20" /></p> <p>λΉ„λ°€λ²ˆν˜Έ : <input type="password" name="pw" /></p> <p>이름 : <input type="text" name="name" /></p> <p>λ‚˜μ΄ : <input type="text" name="age" onkeyup="checkNumber()" /></p> <p><input type="submit" value="νšŒμ›κ°€μž…"></p> </form> <script> // νšŒμ›κ°€μž… μœ νš¨μ„± 검사 function checkJoin() { let form = document.joinForm // name이 joinForm 인 폼 μš”μ†Œλ₯Ό κ°€μ Έμ˜΄ let id = form.id.value let pw = form.pw.value // alert(id) // alert(pw) // 1. μ•„μ΄λ””λŠ” ν•„μˆ˜κ°’, 6~20자 이내 // 아이디 μž…λ ₯μ—¬λΆ€ 검증 if( id == "" ) { alert('아이디λ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš”') form.id.focus() // id input νƒœκ·Έμ— 포컀슀 return false } // 아이디 κΈ€μž 수 검증 if( id.length < 6 || id.length > 20 ) { alert('μ•„μ΄λ””λŠ” 6~20자 μ΄λ‚΄λ‘œ μž…λ ₯ κ°€λŠ₯ν•©λ‹ˆλ‹€.') form.id.select() // id μž…λ ₯ 값을 선택 return false } // 2. λΉ„λ°€λ²ˆν˜ΈλŠ” ν•„μˆ˜κ°’, 6자 이상 // λΉ„λ°€λ²ˆν˜Έ μž…λ ₯μ—¬λΆ€ 검증 if( pw == "" ) { alert('λΉ„λ°€λ²ˆν˜Έλ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš”') form.pw.focus() // id input νƒœκ·Έμ— 포컀슀 return false } // λΉ„λ°€λ²ˆν˜Έ κΈ€μž 수 검증 if( pw.length < 6 ) { alert('λΉ„λ°€λ²ˆν˜ΈλŠ” 6자 μ΄μƒμœΌλ‘œ μž…λ ₯ν•΄μ•Όν•©λ‹ˆλ‹€.') form.id.select() // id μž…λ ₯ 값을 선택 return false } // 3. 이름은 ν•„μˆ˜κ°’, μ²«κΈ€μžλŠ” 숫자둜 μ‚¬μš© λΆˆκ°€ let name = form.name.value if( name == "" ) { alert('이름을 μž…λ ₯ν•΄μ£Όμ„Έμš”') form.name.focus() return false } // isNaN() : μˆ«μžκ°€ μ•„λ‹ˆλ©΄ true if( !isNaN( name.substr(0, 1) ) ) { alert('이름은 숫자둜 μ‹œμž‘ν•  수 μ—†μŠ΅λ‹ˆλ‹€.') form.name.select() return false } return true } // λ‚˜μ΄ μœ νš¨μ„± 검사 function checkNumber() { let form = document.joinForm console.log( event.keyCode ) // μˆ«μžκ°€ μ•„λ‹Œ 경우 if( !(event.keyCode >= 48 && event.keyCode <= 57 ) ) { alert('숫자만 μž…λ ₯ κ°€λŠ₯ν•©λ‹ˆλ‹€.') event.returnValue = false form.age.value = '' } } </script> </body> </html>
HTML
볡사
β€’
validation02_pro.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>μœ νš¨μ„± 검사</title> </head> <body> <h3>νšŒμ›κ°€μž…μ— μ„±κ³΅ν–ˆμŠ΅λ‹ˆλ‹€.</h3> <% request.setCharacterEncoding("UTF-8"); String id = request.getParameter("id"); String pw = request.getParameter("pw"); String name = request.getParameter("name"); String age = request.getParameter("age"); %> <p>아이디 : <%= id %> </p> <p>λΉ„λ°€λ²ˆν˜Έ : <%= pw %> </p> <p>이름 : <%= name %> </p> <p>λ‚˜μ΄ : <%= age %> </p> </body> </html>
HTML
볡사