이번 시간에는 자바스크립트에서 정규식을 활용하는 간단한 예제를 올려봅니다.
정규식은 문자열에서 문자 조합에 일치 시키기 위하여 사용되는 패턴으로
대표적인 규칙은 아래와 같습니다.
- 정규식 -
============================================
/ 규칙 / : 정규식의 규칙을 쓸 때는 제일 문장 앞과 뒤에 '/'으로 감쌉니다.
^ : 시작을 의미
$ : 끝을 의미
[] : 범위
+ : 1개 이상 나타난다는 것을 의미
[^abc] : a,b,c를 제외한다는 의미
a-z: 알파벳 소문자
A-Z: 알파벳 대문자
0-9: 숫자
[!,_,@] 기호를 허용한다
? : 0이거나 1개
* : 0개 이상 반복된다는 의미
\b : 단어의 경계를 나타내며, 해당 패턴이 정확히 일치해야 함을 의미한다.
\d{4}: 숫자 4개가 와야 한단 의미
\d{1,2}: 숫자가 1개 또는 2개 올 수 있단 의미
[-\/]: -이 오거나 /가 올 수 있단 의미
정규식을 이용해서 제가 구현한 결과 화면은 아래와 같습니다.
사실 앞선 예제와 비슷하긴 하지만
이번 예제는 정규식을 이용한겁니다.
제가 쓴 규칙들은 위와 같고, 다른 규칙들이 사실 더 있습니다.
그런 규칙들은 정규식을 검색해서 보시면 됩니다.
자 어쨋든 그럼 시작하죠
// 아이디 체크 // RegExp객체를 사용하여 패턴 생성 var isUserid=function(){ var pattern=new RegExp(/^[a-zA-Z0-9!@/]+$); var bool=pattern.test(obj.value); //val이 정규식 패턴에 맞으면 true를 반환하고 틀리면 false를 반환한다. return bool; } // 전화번호 체크 var isTel=function(obj){ //0-9 뒤에 있는 -,+는 각각의 기호를 의미 var pattern=new RegExp(/^[0-9-+]+$/); var val=obj.value; var bool=pattern.test(val); return bool; } // 이메일 체크 var isEmail=function(obj){ var pattern=new RegExp(/^[\w-]+(\.[\w-]+)*@([\w-]+\.[a-zA-Z]+$/); /*^[\w-] : 알파벳문자, 숫자, 하이픈(-)이 처음에 올 수 있단 의미 (\.[\w-]+)* : 마침표(.)와 그 다음에 하나 이상의 알파벳 문자,숫자,- 이 0번 이상 나올 수 있단 의미(*) @ : 해당 위치에 @가 와야한단 의미 ([\w-]+\.)+ : 알파벳, 숫자, -이 한번 이상 나오고 그 다음 마침표(.)가 나온다는 의미 그리고 이 조합이 한번 이상 나올 수 있단 의미 [a-zA-Z]+$ : 알파벳 대문자, 소문자 상관없이 문자로 끝나야 함을 의미 */ var bool=pattern.test(obj.value); return bool; } // 날짜체크 var isDate=function(obj){ /*생년월일 날짜 유형 체크 [2016-02-15] [2016/02/15] \b : 단어의 경계를 나타내며, 해당 패턴이 정확히 일치해야 함을 의미한다. \d{4}: 숫자 4개가 와야 한단 의미 \d{1,2}: 숫자가 1개 또는 2개 올 수 있단 의미 [-\/]: -이 오거나 /가 올 수 있단 의미 */ var pattern=new RegExp(/\b\d{4}[-\/]d{1,2}[-\/]\d{1,2}\b/); var bool=pattern.test(obj.value); return bool; } var check=function(){ if(!isUserid(frm.uid)){ alert("아이디는 영문자,숫자,!,_,@여야 해요"); frm.uid.select(); return; } if(!isTel(frm.tel)){ alert("연락처가 숫자가 아니에요"); frm.tel.focus(); return; } if(!isEmail(frm.email)){ alert("이메일 형식이 맞지 않아요"); frm.email.select(); return; } if(!isDate(frm.birth)){ alert("날짜형식이 맞지 않아요"); frm.birth.select(); return; } frm.submit(); }
댓글 없음:
댓글 쓰기