• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 JavaScript, TS 게시판 정규식 왜 안먹죠?

정규식 왜 안먹죠?

2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 글쓴이
  • #70010

    박도영
    참가자
    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <link
          href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css"
          rel="stylesheet"
          integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3"
          crossorigin="anonymous"
        />
        <title>Document</title>
        <style>
          .black-bg {
            width: 100%;
            height: 100%;
            position: fixed;
            background: rgba(0, 0, 0, 0.5);
            z-index: 5;
            padding: 30px;
            visibility: hidden;
            opacity: 0;
            transition: all 0.5s;
          }
          .white-bg {
            background: white;
            border-radius: 5px;
            padding: 30px;
          }
          .show-box {
            transition: all 0.5s;
            visibility: visible;
            opacity: 1;
          }
          .list-group {
            visibility: hidden;
            opacity: 0;
            transition: all 0.5s;
            height: 0px;
          }
          .show {
            visibility: visible;
            opacity: 1;
            transition: all 0.5s;
            height: 210px;
            overflow: hidden;
          }
          .main-bg {
            padding: 100px 20px;
            background: lightgray;
          }
          .badge {
            cursor: pointer;
          }
          .navbar {
            transition: all 1s;
          }
        </style>
      </head>
      <body>
        <div class="black-bg">
          <div class="white-bg">
            <h4 id="title">로그인하세요</h4>
            <form action="">
              <div class="my-3">
                <input type="text" id="id" class="form-control" />
              </div>
              <div class="my-3">
                <input type="password" id="pw" class="form-control" />
              </div>
              <button type="submit" class="btn btn-primary">전송</button>
              <button id="close" type="button" class="btn btn-danger">닫기</button>
            </form>
          </div>
        </div>
        <nav class="navbar navbar-dark bg-black">
          <div class="container-fluid">
            <span class="navbar-brand">Navbar</span>
            <span class="badge bg-dark">Dark 🔄</span>
            <button class="navbar-toggler" type="button">
              <span class="navbar-toggler-icon"></span>
            </button>
          </div>
        </nav>
        <ul class="list-group">
          <li class="list-group-item">An item

          <li class="list-group-item">A second item

          <li class="list-group-item">A third item

          <li class="list-group-item">A fourth item

          <li class="list-group-item">And a fifth one

       

        <div class="main-bg">       <h4>Shirts on sale</h4>       <button id="btn-login" class="btn btn-danger">로그인</button>     </div>     <div class="alert alert-danger"><span class="number"></span></div>     <script>       //   setTimeout(function () {       //     document.querySelector(".alert").style.display = "none";       //   }, 1000);       var time = setInterval(함수, 1000);       var count = 6;       function 함수() {         count--;         document.querySelector(".alert").innerHTML = count + "초";         if (count === 0) {           clearInterval(time);         }       }     </script>     <script       src="https://code.jquery.com/jquery-3.6.3.min.js"       integrity="sha256-pvPw+upLPUjgMXY0G+8O0xUf+/Im1MZjXxxgOcBQBXU="       crossorigin="anonymous"     ></script>     <script>       var click = 0;       document.querySelector(".badge").addEventListener("click", function () {         click++;         if (click % 2 == 1) {           light();           document.querySelector(".badge").innerHTML = "Light 🔄";           document.querySelector(".bg-dark").classList.add("bg-white");           document.querySelector(".bg-dark").style.color = "black";         } else {           dark();           document.querySelector(".badge").innerHTML = "Dark 🔄";           document.querySelector(".bg-dark").classList.remove("bg-white");           document.querySelector(".bg-dark").style.color = "white";         }       });       function light() {         document           .querySelector(".navbar")           .classList.add("bg-white", "navbar-light");         document.querySelector(".navbar").classList.remove("navbar-dark");       }       function dark() {         document           .querySelector(".navbar")           .classList.remove("bg-white", "navbar-light");         document.querySelector(".navbar").classList.add("navbar-dark");       }       /* input 입력한 값에 관하여 값을 변경         change input에 입력한값이 바뀌고 포커스를 잃을때 발생       */       document.getElementById("id").addEventListener("input", function () {         document.getElementById("title").innerHTML =           "아이디는 6자 이상 그리고 이메일 형식입니다.";       });

          /* form 전송버튼 누르면 저기 input에 입력한 값이 공백이면 알림창띄워주세요 */
          document.querySelector("form").addEventListener("submit", function (e) {
            let idcontent = document.querySelector("#id").value;
            let regex =
              /([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
            if (regex.test(idcontent) {
              alert("이메일이 아닙니다.");
              e.preventDefault();
            } 요기가 정규식 코드 입니다.
            if (idcontent === "" ) {
              e.preventDefault(); //폼 전송 막기
              alert("아이디를 입력해주세요");
            } else if (document.querySelector("#pw").value === "") {
              e.preventDefault(); //폼 전송 막기
              alert("비밀번호 입력해주세요");
            } else if (document.querySelector("#pw").value.length < 6) {
              //몇글자인지?
              e.preventDefault(); //폼 전송 막기
              alert("비밀번호 너무 적다");
            }
          });
          $("#btn-login").on("click", function () {
            $(".black-bg").addClass("show-box");
          });
          $("#close").on("click", function () {
            $(".black-bg").removeClass("show-box");
          });
          $(".navbar-toggler").on("click", function () {
            $(".list-group").toggleClass("show");
          });
        </script>
        <script
          src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"
          integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p"
          crossorigin="anonymous"
        ></script>
      </body>
    </html>
    <!--
       유저가 입력한게 이메일형식인지 검사?
       정규식 쓰면가능
       1. 문자 범위 지정 가능 [a-z] 
       2. [A-Z] / 아무 알파벳 1개 [a-zA-Z], 한국어문자하나[ㄱ-ㅎ가-힣]
       3. 숫자 [0-9]
       4. /\S/ 아무문자 1개 
       5. /^a/ a로 시작하냐~ 
       6. /a$/ a로 끝나냐~
       7. /a|b/ , 
       8.이메일 ?
       /\S+@\S+\.\S+/ .은 특별한 정규식 문법임 단 \S 아무문자 1개를 뜻함 그래서 + 기호붙어야함
       . . . regex test 
    -->
    
    
    		
    	
    #70013

    박도영
    참가자
    아.. 해결완료
    
    
    document.querySelector("form").addEventListener("submit", function (e) {
            let idcontent = document.querySelector("#id").value;
            let regex =
              /([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
          if (regex.test(idcontent) {
              alert("이메일이 아닙니다.");
              e.preventDefault();
          } 요기가 정규식 코드 입니다.
    
    
    이러한 식으로 제가 이메일로 해보니 이메일이 아니라고 뜨네요.. 제대로 된 이메일을 검사하고있었네요..
    코드 수정은 ..
    
    document.querySelector("form").addEventListener("submit", function (e) {
            let idcontent = document.querySelector("#id").value;
            let regex =
              /([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
            if (regex.test(idcontent)) {
              return true;
            } else {
              alert("이메일이 아니무리다");
              e.preventDefault();
            }
     
    
    
2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관, 개인정보처리방침
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠