사용자가 이메일 칸에 전화번호를 적거나, 비밀번호를 1자리만 적고 가입 버튼을 누르면 안 되겠죠?
이처럼 잘못된 입력을 서버로 보내기 전에 사전에 걸러내는 것을 유효성 검사(Validation)라고 부릅니다. 예전에는 자바스크립트로 복잡하게 코드를 짜야 했지만, HTML5부터는 간단한 태그 속성 몇 개만으로 브라우저가 알아서 깐깐한 경비원 역할을 해줍니다.
1. 깐깐한 입국 심사대 비유
브라우저에 내장된 유효성 검사 속성들은 마치 공항의 보안 요원처럼 틀린 형식의 데이터를 막아냅니다.
👤
비밀번호: "123" 입력
➡️
👮♂️
pattern="[A-Z]{8}""대문자 8자리 아니면 거절!"
2. 폼 유효성 검사 필수 속성 모음
속성명
적용 가능 타입
설명 및 역할
required
모든 입력 필드
가입 버튼을 누를 때 값이 비어있으면 "이 입력란을 작성하세요" 경고를 띄웁니다.
min / max
number, date
숫자나 날짜의 최소/최대 범위를 엄격하게 제한합니다. 범위를 벗어나면 제출되지 않습니다.
pattern
text, password
정규표현식(Regular Expression)을 사용하여 "영문+숫자 혼합" 등 복잡한 규칙을 강제합니다.
maxlength
text, password
사용자가 입력할 수 있는 최대 글자 수를 원천 차단합니다. (예: 이름은 20자를 넘지 못하게 키보드 입력 방지)
<form action="/submit" class="register-form" id="signupForm">
<h3>회원가입 깐깐한 심사대</h3>
<!-- 1. 숫자 범위 제한 (min, max) -->
<div class="form-group">
<label for="userAge">나이 (18세 이상)</label>
<input type="number" id="userAge" min="18" max="99" placeholder="나이를 입력하세요" required>
<span class="hint">18부터 99까지만 가능합니다.</span>
</div>
<!-- 2. 이메일 형식 검사 (type="email") -->
<div class="form-group">
<label for="userEmail">이메일</label>
<input type="email" id="userEmail" placeholder="example@min.com" required>
<span class="hint">@ 기호가 포함되어야 합니다.</span>
</div>
<!-- 3. 정규표현식 검사 (pattern) -->
<div class="form-group">
<label for="userPw">비밀번호 (영문, 숫자 6~12자)</label>
<input type="password" id="userPw" pattern="[A-Za-z0-9]{6,12}" placeholder="조건에 맞게 입력하세요" required>
<span class="hint">특수문자 제외 영문/숫자만 6~12자</span>
</div>
<!-- 4. 글자 수 제한 (maxlength) -->
<div class="form-group">
<label for="userBio">짧은 자기소개</label>
<input type="text" id="userBio" maxlength="20" placeholder="최대 20자까지만 입력 가능합니다">
</div>
<button type="submit" class="submit-btn">가입하기 (검사 시작)</button>
</form>