# 정규표현식 객체 생성방법 두가지
[ex]
<script>
var regExp1=new RegExp(´text´);
var regExp2=/text/; // 이방식을 많이 이용함...
</script>
# 정규표현식 객체의 메서드
test() : 정규표현식과 일치하는 문자열이 있으면 true, 없으면 false 리턴
exec() : 정규표현식과 일치하는 문자열을 리턴
[ex]
<html>
<body>
<script>
var regExp=/script/;
var string="Javascript jQuery Ajax";
document.write(regExp.test(string)); // true
document.write("<p>");
document.write(regExp.exec(string)); // script
</script>
</body>
</html>
# 문자열 객체의 정규 표현식 사용 메서드
match(regExp) : 정규표현식과 일치하는 부분을 리턴합니다.
replace(regExp, replacement) : 정규표현식과 일치하는 새로운 문자열로 바꿉니다.
search(regExp) : 정규표현식과 일치하는 부분의 위치를 리합니다.
split(regExp) : 정규표현식을 기준으로 문자열을 잘라 배열을 리턴합니다.
[ex]
<html>
<body>
<script>
var regExp=/script/;
var string="Javascript jQuery Ajax";
document.write(string.match(regExp)); // script
document.write("<p>");
document.write(string.replace(regExp,"JAVA")); // JavaJAVA jQuery Ajax
document.write("<p>");
document.write(string.search(regExp)); // 4
document.write("<p>");
document.write(string.split(regExp)); // Java, jQuery Ajax
</script>
</body>
</html>
# 대체문자
$& : 일치하는 문자열
$` : 일치하는 부분의 앞부분 문자열
$´ : 일치하는 부분의 뒷부분 문자열
$1,$2,$3 : 그룹
[ex]
<html>
<body>
<script>
var regExp=/a/;
var string="Javascript jQuery Ajax";
document.write(string.replace(regExp,"+$&+"));
// J+a+vascript jQuery Ajax
document.write("<p>");
document.write(string.replace(regExp,"$`"));
// JJvascript jQuery Ajax
document.write("<p>");
document.write(string.replace(regExp,"$´"));
// Jvascript jQuery Ajaxvascript jQuery Ajax
document.write("<p>");
</script>
</body>
</html>
[ex]
<html>
<body>
<script>
var regExp=/(j)(Quer)(y)/;
var string="Javascript jQuery Ajax";
document.write(string.replace(regExp,"+$1=$2=$3"));
// Javascript +j=Quer=y Ajax
</script>
</body>
</html>
# 플래그문자
g : 전역비교
i : 대소문자를 가리지않고 비교
m : 여러줄검사
[ex]
<html>
<body>
<script>
var regExp1=/a/;
var regExp2=/a/g;
var regExp3=/a/gi;
var string="Javascript jQuery Ajax";
document.write(string.replace(regExp1,"+$&+"));
// J+a+vascript jQuery Ajax
document.write("<p>");
document.write(string.replace(regExp2,"+$&+"));
// J+a+v+a+script jQuery Aj+a+x
document.write("<p>");
document.write(string.replace(regExp3,"+$&+"));
// J+a+v+a+script jQuery +A+j+a+x
document.write("<p>");
</script>
</body>
</html>
# 앵커문자
^ : 입력값의 시작
$ : 입력값의 끝
[ex]
<html>
<body>
<script>
var regExp=/^j/igm;
var string="Javascript\njQuery\nAjax"
document.write(string.replace(regExp,"제이"));
// 제이avascript 제이Query Ajax
</script>
</body>
</html>
[ex]
<html>
<head>
<script>
window.onload=function(){
var taObj=document.getElementById("ta");
taObj.value="Javascript\njQuery\nAjax";
document.getElementById("bu").onclick=function(){
alert(11);
var regExp=/^j/igm;
var string=taObj.value;
taObj.value=string.replace(regExp,"제이");
alert(string.replace(regExp,"제이"));
}
}
</script>
</head>
<body>
<textarea id="ta" cols="50" rows="20">
</textarea>
<input type="button" id="bu">
</body>
</html>
# 메타문자
. : 아무글자
[abc] : 괄호안의 문자
[^abc] : 괄호안의 문자제외
[a-z]
[A-Z]
[0-9]
\d : 숫자
\w : 단어문자(알파벳,숫자,밑줄)
\s : 공백문자
\D : 숫자를 제외한 모든 문자
\W : 단어문자가 아닌 문자(알파벳,숫자,밑줄이 아닌 문자)
\S : 공백문자가 아닌 모든 문자
[ex] 주민번호입력오류검사
<html>
<body>
<input type="text" id="jumin1">-<input type="text" id="jumin2">
<input type="button" id="b" value="검사">
<script>
document.getElementById("b").onclick=function(){
var regExp1=/^\d\d\d\d\d\d$/;
var regExp2=/^\d\d\d\d\d\d\d$/;
var string1=document.getElementById("jumin1").value;
var string2=document.getElementById("jumin2").value;
if(!regExp1.test(string1)) alert(´주민번호앞자리 형식오류~´);
if(!regExp2.test(string2)) alert(´주민번호뒷자리 형식오류~´);
}
</script>
</body>
</html>
# 수량문자
a+ : a가 적어도 1개이상
a* : a가 0개 또는 여러개
a? : a가 0개 또는 한개
a{5} : a가 5개
a{2,5} : a가 2개~5개
a{2,} : a가 2개이상
a{,2} : a가 2개이하
[ex] 주민번호입력오류검사를 수량문자를 이용하는 소스코드로 고치시오.
<html>
<body>
<input type="text" id="jumin1">-<input type="text" id="jumin2">
<input type="button" id="b" value="검사">
<script>
document.getElementById("b").onclick=function(){
/*
var regExp1=/\d\d\d\d\d\d/;
var regExp2=/\d\d\d\d\d\d\d/;
*/
var string1=document.getElementById("jumin1").value;
var string2=document.getElementById("jumin2").value;
if(!regExp1.test(string1)) alert(´주민번호앞자리 형식오류~´);
if(!regExp2.test(string2)) alert(´주민번호뒷자리 형식오류~´);
}
</script>
</body>
</html>
[an]
<html>
<body>
<input type="text" id="jumin1">-<input type="text" id="jumin2">
<input type="button" id="b" value="검사">
<script>
document.getElementById("b").onclick=function(){
var regExp1=/^\d{6}$/;
var regExp2=/^\d{7}$/;
var string1=document.getElementById("jumin1").value;
var string2=document.getElementById("jumin2").value;
if(!regExp1.test(string1)) alert(´주민번호앞자리 형식오류~´);
if(!regExp2.test(string2)) alert(´주민번호뒷자리 형식오류~´);
}
</script>
</body>
</html>
# 선택문자
(abc|def) : abc 또는 def를 선택한다.
[ex] 양끝 공백 제거하기
<html>
<body>
<input type="text" id="txt">
<input type="button" id="b" value="검사">
<script>
String.prototype.trim=function(){
return this.replace(/^\s+/,"").replace(/\s+$/,"");
}
document.getElementById("b").onclick=function(){
var string=document.getElementById("txt").value;
alert(string.trim().length);
}
</script>
</body>
</html>
'개발하자 > JSP&Servlet' 카테고리의 다른 글
ui예제들 (0) | 2015.03.26 |
---|---|
주민번호 앞자리 검사 정규표현식 (0) | 2015.03.26 |
sitemesh 활용하기 (decorator) (0) | 2015.03.26 |
프로젝트 경로 pageContext.request.contextPath (0) | 2015.03.20 |
filter 필터 (0) | 2015.03.19 |