본문 바로가기

javascript, framework/jquery

Step08_regExp(정규표현식 활용 예제)

Step08_example 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Step08_example.html</title>
</head>
<body>
<form action="signup" method="post" id="signupForm">
    <label for="id">아이디</label>
    <input type="text" name="id" id="id"/><br/>
    <label for="pwd">비밀번호</label>
    <input type="text" name="pwd" id="pwd"/><br/>
    <label for="phone">전화번호</label>
    <input type="text" name="phone" id="phone" placeholder="010-1234-5678"><br/>
    <button type="submit">가입</button>
</form>
<script src="js/jquery-3.4.1.js"></script>
<script>
    /*
        [ 검증조건 ]
        아이디 : 영문자로 시작, 특수문자 허용하지 않음, 최소 5글자, 최대 10글자
        비밀번호 : 특수문자 1개 , 대문자 1개 반드시 포함, 8글자 이상  

        [a-zA-Z0-9] => [/w]
        [^a-zA-Z0-9] => [/W]
    */

    var idReg=/^[a-zA-Z][a-zA-Z0-9]{4,9}$/;

    var pwdReg1=/[/W]+/;  //특수문자 포함 여부를 검증할 정규식
    var pwdReg2=/[A-Z]+/; //영문자 대문자 포함여부를 검증할 정규식
    var pwdReg3=/^.{8,}$/; //최소 8글자 이상인지 여부를 검증할 정규식 

    //핸드폰 번호를 검증할 정규표현식 
    var phoneReg=/^01[016789]-[0-9]{3,4}-[0-9]{4}$/;

    /*
        폼에 회원가입 정보를 입력하고 가입 버튼을 눌렀을때 위의 정규표현식
        객체로 입력한 필드를 검사해서 매칭이 안된다면 매칭이 안되는 이유를
        alert() 창으로 출력하고 폼 전송을 막아 보세요.
    */
    $("#signupForm").on("submit", function(){
        //입력한 아이디
        var id=$("#id").val();
        if(!idReg.test(id)){
            alert("아이디를 영문자로 시작, \
            특수문자 허용하지 않음, 최소 5글자, 최대 10글자, 입력하세요!");
            return false; //폼 전송 막기 
        }
        //입력한 비밀번호
        var pwd=$("#pwd").val();
        if(!pwdReg1.test(pwd)){
            alert("비밀번호에 특수문자를 1개이상 포함 시키세요");
            return false;
        }
        if(!pwdReg2.test(pwd)){
            alert("비밀번호에 영문자 대문자를 1개이상 포함 시키세요.");
            return false;
        }
        if(!pwdReg3.test(pwd)){
            alert("비밀번호를 8글자 이상 입력하세요.");
            return false;
        }
        //입력한 전화번호
        var phone=$("#phone").val();
        if(!phoneReg.test(phone)){
            alert("전화번호를 형식에 맞게 입력하세요.");
            return false;
        }
    });
</script>    
</body>
</html>

 

 

Step08_example2

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Step08_example2.html</title>
</head>
<body>
<input type="text" id="inputNum" placeholder="숫자만 입력..."/>
<script src="js/jquery-3.4.1.js"></script>
<script>
    var str="abcd1234efgh5678";

    /*
        문자열.replace(/정규표현식/g, "교체할 문자열")

        [0-9] => [\d]
        [^0-9] => [\D]
    */

    $("#inputNum").on("input", function(){
        var str=$(this).val();
        //숫자가 아닌 문자는 빈 문자로 바꿔서 제거되게 한다.
        var result=str.replace(/[^0-9]/g,"");
        //숫자가 제거된 문자열을 다시 value 값으로 넣어준다.
        $(this).val(result);
    });
</script>    
</body>
</html>

Step08_regExp

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Step08_regExp.html</title>
</head>
<body>
<input type="text" id="inputMsg" placeholder="영문자 소문자만 입력..."/>
<p id="console"></p>
<script src="js/jquery-3.4.1.js"></script>
<script>
    //영문자 소문자로만 이루어져 있는지를 검증할 정규 표현식 객체 
    var reg=/^[a-z]+$/;

    // input 요소에 무언가 입력했을때 실행할 함수 등록 
    $("#inputMsg").on("input", function(){
        //입력한 문자열을 읽어와서 
        var msg=$(this).val();
        //영문자 소문자로만 이루어져 있는지 여부 알아내기 
        var isLowerCase=reg.test(msg);
        //p 요소에 출력하기 
        $("#console").text(isLowerCase);
        if(isLowerCase){
            $(this).css("color","#00ff00");
        }else{
            $(this).css("color","#ff0000");
        }
    });
</script>    
</body>
</html>

 

 

Step08_regExp2

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Step08_regExp2.html</title>
</head>
<body>
<button id="extractBtn">추출하기</button>
<ul>

</ul>
<script src="js/jquery-3.4.1.js"></script>
<script>
    var str="My name is kimgura!";
    //공백이 아닌 연속된 문자열을 찾아내는 정규표현식 객체
    var reg=/[^ ]+/g;

    $("#extractBtn").click(function(){
        while(true){
            //정규표현식에 매칭되는 문자열을 얻어낸다.
            var result=reg.exec(str);
            //매칭되는 문자열이 더이상 없으면 null 을 리턴한다.
            if(result==null)break;
            //li 요소를 동적으로 만들어서 text 출력하고 ul 에 추가
            $("<li/>").text(result).appendTo("ul");
        }
    });
</script>    
</body>
</html>

2회클릭해서 2회 출력

'javascript, framework > jquery' 카테고리의 다른 글

Step09_example  (0) 2022.09.16
Step07_form (폼)  (0) 2022.09.16
Step06_animate (트랜지션, 이동)  (0) 2022.09.16
step05_effect (사라졌다 나타나는 효과들)  (0) 2022.09.16
Step01~04 (html, css 접근, event)  (0) 2022.09.16