정규식 예

Language/JAVASCRIPT 2010. 9. 27. 18:46

이메일 체크 정규식
/^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i;


핸드폰번호 정규식
/^\d{3}-\d{3,4}-\d{4}$/;


일반 전화번호 정규식
/^\d{2,3}-\d{3,4}-\d{4}$/;


아이디나 비밀번호 정규식
 /^[a-z0-9_]{4,20}$/;


var regExp = /^01([0|1|6|7|8|9]?)-?([0-9]{3,4})-?([0-9]{4})$/;


if ( !regExp.test( document.frm.hp.value ) ) {
      alert("잘못된 휴대폰 번호입니다. 숫자, - 를 포함한 숫자만 입력하세요.");
      return false
}

추가 - php 경우
<?
$exe = "^01([0|1|6|7|8|9])-?([0-9]{3,4})-?([0-9]{4})$";
$text = "01726161874";
$result = eregi($exe,$text);
if($result){
 echo $text;
}else{
 echo "잘못된 문자열";
}
?>

[ 출처 ]
: 『 skystory.kr 』- 세상의 끝으로 함께...
[ 제목 ] : 자바스크립트 정규식 (메일,핸드폰,전화,아이디,패스워드) | [ 작성자 ] : 하늘이야기

 

 

출처는 위와 같다.

 

응용

//숫자만 받기

<script>
var regExp = /[^0-9]/;
var hp_value="";

function aa(){

for(var i=0;i<document.getElementById('hp').value.length;i++){
 var checkStr = document.getElementById('hp').value.charAt(i);
 hp_value+=checkStr.replace(regExp,"");
}
document.getElementById('hp').value=hp_value;
}


</script>

<input type="text" name="hp" id="hp" onblur="aa()">

// 숫자만 받기

 

 

사용방법은

자스에서는 replaceAll 을 지원하지 않음으로

 

var regExp = 정규식;

var 빈값="";

function aa(){

for(var i=0;i<str.length;i++){
 var checkStr = str.charAt(i);
 빈값+=checkStr.replace(regExp,"");
}
}

</script>

 

 

/^[정규식]/;

정규식 부분 제거

 

/[^정규식]/;

정규식 부분외 제거

 

 

대충 이런식

 

 

 

숫자

/^[0-9]/;

 

영문

/^[a-zA-Z]/;

 

한글

/^[ㄱ-ㅎㅏ-ㅣ가-힣]/;

 

특문

/[^0-9a-zA-Zㄱ-ㅎㅏ-ㅣ가-힝]/;

(한,영,숫자를 제외한 모든 문자)

 

 

 

정규식 졸 어렵;ㅠ

 

 

=======================================2010.8.26 내용추가

스크립트 제거

     var regExp =/^[\<(script)+\>]/gi;

문장, 문자열을 제거할때는

[(문자열)] 로 표시하면 됨

 

/g   // str 의 모든 문자열 대상 검사

/i   // str 의 대소문자 구분 없이 모든 문자 검사 



=================================== 내용 추가

정규식은 / / 으로 시작 끝

\w - 한자리 문자 숫자

\d - 한자리 숫자

^ - 시작

. - 한자리 문자

$ - 표현식 끝

 

즉 내가 4444 라는 식으로 입력되길 원한다면

/^\d\d\d\d$/  이런식

 

반복되는 형태를 간결히 하기 위해 있는것이 수량한정자

* - 0혹은 그 이상(선택적)

+ - 1번 이상

? - 0혹은 한번

{n} -  n번  여기서 한가지 더 {min, max} - min 번에서  max까지 허용

 

즉 위에 2009/09/01 이라고 입력되길 원한다면

/^\d{2,4}\/\d{2}\/\d{2}$/

이런식이 될것이다

앞에 2009는 4글자 2009의 경우와 09의 경우 두가지를 다 생각한것이다

 

그리고 이것을 확일하는 방법은

regExp라는 객체의  test()메소드를 이용하여 정규식을 이용 확인할수 있다..

 

예를 들어 내가 입력한 텍스트의 id명이  input 이라고 가정한다면

var regexp=/^\d{2,4}\/\d{2}\/\d{2}$/;

 if(! regexp.test(input.value)){

 

}

이런식으로 확인가능 하다  test()의 반환형은  boolean 이다

 

우리가 했던  E-mail  확인 정규식은

var regexp=/^\w{3,10}/@/\w{3.10}\.\w{3,6}$/

if(! regexp.test(email.value)){

        alert("잘못된 형식입니다");

}

이런식으로 확인 가능 하지 않을가 생각한다..

alert 가 아닌  span을 이용하면

function eee(){

    var regexp=/^\w{3,10}/@/\w{3.10}/.\w{3,6}$/

    if(! regexp.test(email.value)){

       document.getElementById(email).innerHTML="잘못된 형식입니다";      

}

}


: