180bpm

자주 쓰이는 정규표현식 본문

Develop/R&D

자주 쓰이는 정규표현식

powdersnow 2014. 11. 13. 12:18

http://blog.bucksbug.com/91

아래는 Javascript 나 PHP에서 자주 사용되는 정규표현식이다.

물론, 예시일 뿐 정규표현식을 예시에 의존하여 사용하다 보면

정작 급하게 필요할 때 낭패보는 경우가 있으니 어렵더라도

기본적인 정규식은 알아두고 사용할 것을 권한다.

★ 숫자만 가능 : [ 0 ~ 9 ] 주의 : 띄어쓰기 불가능

/^[0-9]+$/


★ 이메일 형식만 가능 : [ test@nate.com ]

/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/


★ 한글만 가능 : [ 가나다라 ... ] 주의 : ㄱㄴㄷ... 형식으로는 입력 불가능 , 띄어쓰기 불가능

/^[가-힣]+$/


★ 한글,띄어쓰기만 가능 : [ 가나다라 ... ] 주의 : ㄱㄴㄷ... 형식으로는 입력 불가능 , 띄어쓰기 가능

/^[가-힣\s]+$/


★ 영문만 가능 :

/^[a-zA-Z]+$/


★ 영문,띄어쓰기만 가능

/^[a-zA-Z\s]+$/


주석을 제외한 한글 검색

 (?=((?<!(\*.{0,100}))([가-힣ㄱ-ㅎ]+)))(?=((?<!(\/\/.{0,100}))([가-힣ㄱ-ㅎ]+)))(?=((?<!(\<\!\-\-.{0,100}))([가-힣ㄱ-ㅎ]+)))(?=((?<!(\<\%\-\-.{0,100}))([가-힣ㄱ-ㅎ]+)))(?=((?<!(\-.{0,100}))([가-힣ㄱ-ㅎ]+))).*


★ 전화번호 형태 : 전화번호 형태 000-0000-0000 만 받는다. ]

/^[0-9]{2,3}-[0-9]{3,4}-[0-9]{4}$/


★ 도메인 형태, http:// https:// 포함안해도 되고 해도 되고

/^(((http(s?))\:\/\/)?)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?$/


★ 도메인 형태, http:// https:// 꼭 포함

/^((http(s?))\:\/\/)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?$/


★ 도메인 형태, http:// https:// 포함하면 안됨

/^[^((http(s?))\:\/\/)]([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?$/


★ 한글과 영문만 가능

/^[가-힣a-zA-Z]+$/;


★ 숫자,알파벳만 가능

/^[a-zA-Z0-9]+$/;


★ 주민번호, -까지 포함된 문자열로 검색

/^(?:[0-9]{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[1,2][0-9]|3[0,1]))-[1-4][0-9]{6}$/



Jquery 에서는 $.test() 메서드로,

PHP 에서는 preg_match() 함수로 사용하면 되겠다.


http://seonn35.tistory.com/5

네이버 회원가입 폼을 참고하여 회원가입 폼을 만들어보았다.

값은 정규표현식을 사용하여 적절한지 판단..

/정규표현식

var reg_uid = /^[a-z0-9_]{5,12}$/; //5~12자 영문소문자, 숫자, 특수문자 _ 사용가능

var reg_upw = /^(?=.*[a-zA-Z])(?=.*[!@#$%^*+=-]|.*[0-9]).{6,24}$/; 

//6~16자 영문대소문자, 숫자, 특수문자 혼합하여 사용

var reg_nickname = /^[0-9a-zA-Z가-힣]{4,20}$/; //한글10자, 영문20자, 한글,영문,숫자 사용가능

  

//스타일 내역

var s_default = {"border":"1px solid #ccc", "background-color":"#fff"}; //기본

var s_fail = {"border":"1px solid red","background-color":"#fff2f2"}; //실패

var s_success = {"border":"1px solid #214a9e","background-color":"#dee9ff"}; //성공

var s_focus = {"border":"1px solid #429e21","background-color":"#fbfff2"} //포커스 시

  

var form = $("form"),

    uid = $("#uid"),

    upw = $("#upw"),

    re_upw = $("#re_upw"),

    nickname = $("#nickname");

  

$("input").focus(function(){

    //포커싱 시 출력되는 스타일(녹색으로~)

    $(this).css(s_focus);

  

    if( this.id == "uid" ){

        $(this).next().next().show();

    }else if( this.id == "upw" ){

        $(this).next().show();

    }else if( this.id == "re_upw" ){

        $(this).next().show();

    }else if( this.id == "nickname" ){

        $(this).next().show();

    }

});

  

$("input").blur(function(){

    //기본적으로 blur 되면 배경색이 원래대로..

    $(this).css(s_default);

      

    //아이디 입력 : 올바른 값이 입력되지 않으면 빨간색으로 출력

    if( this.id == "uid" ){

        if( $(this).val() == "" ){

            $(this).css(s_default).next().next().hide();

        }else   if( reg_uid.test( $(this).val() ) != true ){

            $(this).css(s_fail);

        }else{

            $(this).css(s_success).next().next().hide();

        }

  

    //패스워드 입력

    }else if( this.id == "upw"){

        var upwSize = $(this).val().length;

        if( $(this).val() == "" ){

            $(this).css(s_default).next().hide();

        }else if( upwSize < 6 ){

            $(this).css(s_fail);

        }else{

            $(this).css(s_success).next().hide();

        }

  

    //패스워드 재입력

    }else if( this.id == "re_upw"){

        if( $(this).val() == "" ){

            $(this).css(s_default).next().hide();

        }else if( $(this).val() != upw.val() ){

            $(this).css(s_fail);

        }else{

            $(this).css(s_success).next().hide();

        }

  

    //별명 입력

    }else if( this.id == "nickname"){

        //별명 한글일때 글자 수 체크

        var nickVal = nickname.val();

        var nickSize = nickVal.length;

        var maxlen = 20;

        var i = 0;

        var bytesize = 0;

        var onechar = ""; 

        for(i=0; i < nickSize; i++){ 

            //길이제한 이 필요한 사이즈저장 

            //한글+2  

            onechar = nickVal.charAt(i); //문자 저장

            if( escape( onechar ).length > 4 ){ 

                //escape : 아스키값이 아닌 문자를 16진수로 변경해줌 (?) - 아스키문자가 아닌게 4개이상되면..

                //아스키문자: 영문대소문자,숫자,@*-_+./

                bytesize+=2; //한글일 경우 x2

            }else{ 

                bytesize++; 

            } 

        }

          

        if( $(this).val() == "" ){

            $(this).css(s_default).next().hide();

        }else if( reg_nickname.test( $(this).val() ) != true ){

            $(this).css(s_fail);

        }else if( bytesize > maxlen ){

            //alert("한글 10자, 영문 숫자 20자 초과"); 

            $(this).css(s_fail);

        }else{

            $(this).css(s_success).next().hide();

        }

    }

});



Comments