본문 바로가기
코딩/Web

자바스크립트 정규 표현식, 이벤트

by Song1234 2024. 4. 18.

정규 표현식

문자열에서 특정 문자 조합을 찾기위한 패턴

    <input type='text' id='userid' name='userid'>
  • 4자이상 20자 이하로 체크
  • 특수문자 입력 불가
  • 한글 입력 불가

정규 표현식 표기

/정규 표현식 패턴/

아이디 패턴 만들기

  • 영문 대문자 또는 소문자만 입력
  • 길이는 4자이상 20자이하로 입력 가능
  • /^[A-Za-z]{4,20}$/

이름 패턴 만들기

  • 한글만 사용
    /^[가-힣]+$/

휴대폰 번호 패턴

  • 정수 3자리 - 정수 3자리 또는 4자리 - 정수 4자리
  • 예) 010-1111-1111 또는 010-111-1111
    /^\d{3}-\d{3,4}-\d{4}$/

이메일 패턴 만들기

  • 영문 대문자, 소문자, 숫자 입력
  • 이메일 패턴에 의한 @, .이 포함
  • 예) aaaa@aaa.com, dr.ryu@aaa.com
    /^[A-Za-z0-9\-\.\_]+@[A-Za-z0-9\-]+\.[A-Za-z]+$/

검증하기

test(): 정규표현식의 대입한 문자열이 패턴과 적합하면 true, 아니면 false를 리턴

    아이디: <input type="text" name="userid" id="userid">

    <script>
    const userid = document.getElementById('userid')

    const expIdText = /^[A-Za-z]{4,20}$/
    </script>

    expIdText.test(userid.value)    // 적합하면 true, 아니면 false를 리턴

이벤트(Event)

  • 웹브라우저가 알려주는 HTML 요소에 대한 사건이 발생
  • 웹페이지에 사용된 자바스크립트는 발생한 이벤트에 반응하여 특정 동작을 수행할 수 있음
  • 자바스크립트는 비동기식 이벤트 중심의 프로그래밍 모델
<input type='button' onclick='sendit()' value'=확인'>


<button type='button' onclick='sendit()'>확인</button>

// type='button': 이벤트 타겟
// onclick: 이벤트 타입
// 'sendit()': 이벤트 리스너

이벤트 타겟(Event Target)

이벤트가 일어날 객체를 의미

이벤트 타입(Event Type)

  • 발생한 이벤트의 종류를 나타내는 문자열로 이벤트명 이라고도 부름
  • 키보드, 마우스, HTML DOM, window 객체 .. 등을 처리하는 이벤트를 제공

 

See the Pen Untitled by Yunseop Song (@Yunseop-Song) on CodePen.

이벤트 리스너(Event Listener)

  • 이벤트가 발생했을 때 그 처리를 하는 함수
  • 이벤트 핸들러라고도 부름
  • 지정된 타입의 이벤트가 특정 요소에서 발생하면 웹브라우저는 그 요소에 등록된 이벤트리스너를 실행

 

See the Pen Untitled by Yunseop Song (@Yunseop-Song) on CodePen.

이벤트 등록

객체.addEventListener(이벤트타입, 이벤트리스너)

이벤트 제거

객체.removeEventListener(이벤트타입, 이벤트리스너)

이벤트 객체(Event Object)

  • 특정 타입의 이벤트와 관련이 있는 객체
  • 이벤트 객체는 해당 타입의 이벤트에 대한 상세 정보를 저장하고 있음
  • 모든 이벤트 객체는 이벤트의 타입을 나타내는 type 프로퍼티와 이벤트 대상을 나타내는 target프로퍼티를 가지고 있음
<button type="button" onclick="sendit()">완료</button>

<script>
    function sendit(e){
        ....
        // e.target = button
        // e.type = click

    }
</script>

문제

버튼 2개를 아래와 같이 만들고, 각 버튼을 누르면 콘솔에 "버튼 X가 눌렸어요"를 출력하는 문서를 만들어보자. (,단 이벤트 객체를 활용하고 이벤트 핸들러는 한가지를 사용)


[버튼1] [버튼2]


버튼1 을 클릭했을 경우: 버튼 1이 눌렸어요!  
버튼2 을 클릭했을 경우: 버튼 2가 눌렸어요!

 

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>버튼</title>
    <script>
        window.onload = function(){
            const btn1 = document.getElementById('btn1');
            const btn2 = document.getElementById('btn2');
            const btn3 = document.getElementById('btn3');

            btn1.addEventListener('click', (clickBtn))
            btn2.addEventListener('click', (clickBtn))
            btn3.addEventListener('click', (e) => {
                console.log('버튼 3이 눌렸어요!');
            });
        }

        // function clickBtn(e){
        //     console.log(`${e.target.value}이 눌렸어요`)
        // }
        function clickBtn(e){
            switch(e.target.id){
                case 'btn1' :
                    console.log('버튼 1이 눌렸어요!')
                    break
                case 'btn2' :
                    console.log('버튼 2가 눌렸어요!')
                    break
            }
        }
    </script>
</head>
<body>
    <button type="button" id="btn1" value="버튼1">버튼1</button>
    <button type="button" id="btn2" value="버튼2">버튼2</button>
    <button type="button" id="btn3" value="버튼3">버튼3</button>
</body>
</html>

 

 

 

이벤트와 정규표현식을 사용한 회원가입 페이지

See the Pen Untitled by Yunseop Song (@Yunseop-Song) on CodePen.

'코딩 > Web' 카테고리의 다른 글

node.js 동기, 비동기  (0) 2024.04.26
node.js  (1) 2024.04.26
자바스크립트 객체  (0) 2024.04.17
자바스크립트 함수  (1) 2024.04.16
자바스크립트 반복문과 배열  (1) 2024.04.16