반응형
원본 작성일: 2014.04.08
보완 작성일: 2026.02.14

이메일 입력 필드에서 형식을 체크하고, 한글 입력을 차단하는 JavaScript 검증 함수를 정리한 글이다.
한글 포함 여부 검사
원본 코드는 문자의 유니코드 범위를 직접 확인하는 방식이다.
function isKorean(str) {
for (var i = 0; i < str.length; i++) {
var code = str.charCodeAt(i);
// 한글 자모 (ㄱ~ㅎ, ㅏ~ㅣ): 0x3130 ~ 0x318F
// 한글 완성형 (가~힣): 0xAC00 ~ 0xD7A3
if ((code > 0x3130 && code < 0x318F) ||
(code >= 0xAC00 && code <= 0xD7A3)) {
return true; // 한글 포함
}
}
return false; // 한글 없음
}
isKorean('test@email.com'); // false
isKorean('테스트@email.com'); // true정규식으로 간단하게
function isKorean(str) {
return /[ㄱ-ㅎㅏ-ㅣ가-힣]/.test(str);
}한 줄이면 같은 결과를 얻을 수 있다.
이메일 형식 검사
간단한 방식 (원본)
@와 .의 존재 여부만 확인하는 최소한의 검증이다.
function checkEmail(email) {
if (!email) return true; // 선택 필드면 빈 값 허용
var atIndex = email.indexOf('@');
if (atIndex < 1) return false; // @ 없거나 맨 앞
var afterAt = email.substring(atIndex + 1);
if (!afterAt) return false; // @ 뒤에 값 없음
if (afterAt.indexOf('.') < 1) return false; // . 없거나 맨 앞
return true;
}정규식 방식
function checkEmail(email) {
var regex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
return regex.test(email);
}
checkEmail('user@example.com'); // true
checkEmail('user@.com'); // false
checkEmail('user@example'); // false이 정규식은 완벽하지는 않지만 실무에서 충분한 수준이다. RFC 5322 완전 준수 정규식은 수백 자에 달하고 오히려 유지보수가 어렵다.
HTML5로 해결하기
<input type="email" required placeholder="이메일을 입력하세요" />type="email"을 사용하면 브라우저가 기본적인 이메일 형식 검증을 해준다. submit 시 자동으로 체크되고, 모바일에서는 @ 키가 포함된 키보드가 뜬다.
주의: 프론트엔드 검증의 한계
프론트엔드 검증은 UX 개선 목적이다. 보안이나 데이터 무결성을 위한 검증은 반드시 서버에서 해야 한다. JavaScript 검증은 개발자 도구에서 쉽게 우회할 수 있다.
프론트엔드: "이메일 형식이 아닙니다" → 사용자 편의
백엔드: 이메일 형식 + 중복 체크 + SQL Injection 방어 → 보안반응형
'Mechanic: IT 인터넷 > Mechanic, M-Tech' 카테고리의 다른 글
| JavaScript 금액 표시 콤마 - 12345 → 12,345 (0) | 2014.04.08 |
|---|---|
| JavaScript Map 구현과 URL 파라미터 파싱 - ES5 시대의 방법 (0) | 2014.04.08 |
| Eclipse에서 jQuery 오류 표시 제거하기 - JavaScript Include Path 설정 (0) | 2014.02.15 |
| JavaScript 숫자에 콤마(쉼표) 추가하기 - 천 단위 구분 (0) | 2014.02.14 |
| JavaScript 반올림, 올림, 내림 - Math.round, ceil, floor 자리수 지정 (0) | 2014.02.13 |