JavaScript 및 정규식으로 이메일 주소 확인

얼마 전에 나는 JavaScript 및 정규식을 사용하는 암호 강도 검사기. 동일한 메모에서 동일한 정규식 (regex) 방법론을 사용하여 이메일 주소의 구조를 확인할 수도 있습니다.

양식 요소에 id =”emailaddress” 그리고 당신은 양식을 추가 onSubmit =”return checkEmail ();“, 이것은 이메일 주소가 유효한 구조를 가지고 있는지 여부를 알리는 데 사용할 수있는 자바 스크립트 함수입니다.

function checkEmail() {
var email = document.getElementById('emailaddress');
var filter = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
if (!filter.test(email.value)) {
alert('Please provide a valid email address');
email.focus;
return false;
}
}

이 함수는 필터의 내용에 대해 이메일 내용의 유효성을 검사합니다. 비교가 실패하면 경고를 표시하고 포커스를 이메일 주소 필드로 되돌립니다!

댓글 41

  1. 1

    이메일 주소가 여러 개인 양식의 경우 class =”emailaddress”를 수행하는 것이 좋습니다. prototype.js 라이브러리 (http://www.prototypejs.org) 페이지에 포함되어 다음과 같이 할 수 있습니다.

    var 유효한 = 참;
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    $$ ( '. emailaddress'). each (function (email) {
    if (! filter.test (email.value)) {
    alert (? 유효한 이메일 주소를 입력하세요?);
    이메일.포커스;
    유효 = 거짓;
    }
    });
    유효한 반환;

  2. 5
  3. 7

    나는 아이디어가 마음에 들지만 어떤 법적 이메일 주소가 허용되지 않으며 어떤 불법 주소가 허용되는지에 대한 설명없이이 특정 정규 표현식을 채택하는 것을 주저합니다.

    다루지 않는 경우에 대한 설명과 함께 적절한 작업을 수행하는 정규식의 예는 다음을 참조하십시오.

    http://www.regular-expressions.info/email.html

    개인적으로 선호하는 것은 대부분의 간단한 경우를 다루고 거부하는 것보다 다른 모든 것에 대해 경고하는 것입니다. Bob이 정말로 제출하고 싶다면 밥@com.museum 보다는 밥@museum.com, 왜 그를 두지 않습니까?

    • 8

      안녕하세요 Reg,

      정규식을 사용하여 테스트 할 수 있습니다. 온라인 정규식 테스터.

      또한, 확실히하고 싶다면 할 수있는 일이 훨씬 더 많습니다. 이메일 주소 RFC에 따라 유효합니다.

      누군가가 잘못된 이메일 주소를 입력하는 것을 허용하지 않는 몇 가지 이유가 있습니다.
      1. 그들은 당신의 잘못인지 아닌지에 관계없이 그들이 예상 한 이메일이 제대로 전달되지 않을 때 당신에게 짜증을 낼 것입니다.
      2. com.museum이 유효한 도메인이고 Yahoo! -반송 된 이메일 주소는 이메일 전달에 대한 회사의 평판에 부정적인 영향을 미칩니다. 이로 인해 회사의 모든 이메일이 차단 될 수 있습니다.
      3. 이메일 서비스 제공 업체가 귀하가 밥@com.museum, 반송 메일로 인해 해당 주소를 수신 거부 할 때까지 해당 이메일 주소로 전송 된 각 이메일에 대해 비용을 지불해야합니다. 나는 그런 잘못된 이메일 주소를 허용하는 ESP를 피할 것입니다 – 그들은 단지 당신의 돈을 가져가는 것입니다!

      들러 주셔서 감사합니다!

  4. 9
  5. 10

    표현식을 작성하는 훨씬 더 간단한 방법이 있습니다.
    var regex = /^[a-z0-9\._-]+@([a-z0-9_-]+\.)+[a-z]{2,6}$/i;
    – 최종 수정 자 / i를 사용하면 대문자 범위를 표시 할 필요가 없습니다.
    – 나는 아무것도 모른다 TLD 그것에 숫자와 함께.
    참고로, 최대 6 자까지 TLD를 허용합니다. 새로운 것들은 정기적으로 도착하고 당신은 결코 알지 못합니다 (글쎄, 미래의 것들은 심지어 숫자를 가질 수도 있습니다.)

  6. 11

    안녕,

    실시간으로 기존 양식으로 사용하려고하는데 비밀번호 강도 검사기처럼 실시간으로 확인되지 않는 것 같습니다.

    아니면, 나는 그저 그저 단서가없고 그것은 나를 위해 일하지 않습니까?

  7. 12

    btw, 나는 당신이 여기에서 진행하는 것을 정말로 좋아합니다. 당신의 튜토리얼은 매우 간단합니다. 나는 확실히 이것을 북마크 할 것입니다 ....

  8. 13
  9. 16
  10. 17

    약간의 수정 : 정규 표현식의 끝에 추가 () +가 있습니다. 읽어야합니다.

    ^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+[a-zA-Z0-9]{2,4}$

    첫 번째로 모든 길이의 TLD가 허용됩니다 (다른 사람들이 지적한 것처럼 본질적으로 잘못된 것은 아니지만 의도 한 경우 표현을 단축 할 수 있음).

  11. 18

    이 코드의 정규식과 작동 방식을 설명해 주시겠습니까? 또한 .test에 대해 – .test는 위 코드에서했던 것과 같은 것을 확인하기 위해 자바 스크립트의 기본 문입니까?

  12. 19

    이것은 이메일 표현을위한 짧은 코드입니다.

    validateEmail (id) 함수
    {
    var 이메일 패턴 = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$/;
    return emailPattern.test (id);

    }
    디팍 라이
    바라나시

  13. 20

    이것은 이메일 표현을위한 짧은 코드입니다.

    validateEmail (id) 함수
    {
    var 이메일 패턴 = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$/;
    return emailPattern.test (id);

    }
    디팍 라이
    바라나시

  14. 21
  15. 22
  16. 23

    감사합니다.이 정규식에 오류가 있습니다. 나는 정규식 전문가는 아니지만 이메일을 시도했습니다.

    test @ test

    정규식을 통과했습니다. "."이스케이프가 부족하다는 것을 알았습니다. 따라서 다음과 같아야합니다.

    /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/

  17. 24
  18. 27

    음, 이것은 대략적인 검사일뿐 100 % 정확하지는 않습니다. 예를 들어 john_doe. @ gmail.com 실제로 유효한 전자 메일 주소가 아닙니다 (전자 메일의 로컬 부분에서 마지막 문자로 점을 사용할 수 없음).
    또한 그것은 받아 들일 것입니다 john…doe@gmail.com 시퀀스에 하나 이상의 점이있을 수 없기 때문에 유효하지 않습니다.

    이것은 내가 첫눈에 발견 한 몇 가지 결함 일뿐입니다.
    내 의도는 누군가가 이것을 보안 검사로 사용할 계획 인 경우에 이것을 지적하는 것이 아니라 충분히 안전하지 않습니다.

    유효한 이메일 주소에 대한 정보는 다음을 확인하십시오. http://en.wikipedia.org/wiki/E-mail_address

  19. 28

    디팍,

    사실 점 ( ".")에 이스케이프를 적용해야한다고 생각합니다. 따라서 함수는 다음과 같아야합니다.

    validateEmail (id) 함수
    {
    var 이메일 패턴 = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$/;
    return emailPattern.test (id);

    }

    그렇지 않으면 점은 "모든 문자"를 의미합니다. 이러한 특수 문자는 이스케이프해야한다고 생각합니다.

    감사합니다

    페데리코

  20. 29

    function validateEmail (fld) {
    var error =””;
    var tfld = trim (fld.value); // 공백이 제거 된 필드 값
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/;
    var illegalChars = / [(),; : \”[]] /;

    if (fld.value ==“이메일 주소 입력”) {

    오류 =“이메일 주소를 입력하십시오 .n”;
    } else if (! emailFilter.test (tfld)) {// 잘못된 문자에 대한 이메일 테스트

    error =“유효한 이메일 주소를 입력하십시오 .n”;
    } else if (fld.value.match (illegalChars)) {

    error =“유효한 이메일 주소를 입력하십시오 .n”;
    }
    반환 오류;
    }

  21. 30

    function validateEmail (fld) {
    var error =””;
    var tfld = trim (fld.value); // 공백이 제거 된 필드 값
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/;
    var illegalChars = / [(),; : \”[]] /;

    if (fld.value ==“이메일 주소 입력”) {

    오류 =“이메일 주소를 입력하십시오 .n”;
    } else if (! emailFilter.test (tfld)) {// 잘못된 문자에 대한 이메일 테스트

    error =“유효한 이메일 주소를 입력하십시오 .n”;
    } else if (fld.value.match (illegalChars)) {

    error =“유효한 이메일 주소를 입력하십시오 .n”;
    }
    반환 오류;
    }

  22. 31

    function validateEmail (fld) {
    var error =””;
    var tfld = trim (fld.value); // 공백이 제거 된 필드 값
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/;
    var illegalChars = / [(),; : \”[]] /;

    if (fld.value ==“이메일 주소 입력”) {

    오류 =“이메일 주소를 입력하십시오 .n”;
    } else if (! emailFilter.test (tfld)) {// 잘못된 문자에 대한 이메일 테스트

    error =“유효한 이메일 주소를 입력하십시오 .n”;
    } else if (fld.value.match (illegalChars)) {

    error =“유효한 이메일 주소를 입력하십시오 .n”;
    }
    반환 오류;
    }

  23. 32

    function validateEmail (fld) {
    var error =””;
    var tfld = trim (fld.value); // 공백이 제거 된 필드 값
    var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/;
    var illegalChars = / [(),; : \”[]] /;

    if (fld.value ==“이메일 주소 입력”) {

    오류 =“이메일 주소를 입력하십시오 .n”;
    } else if (! emailFilter.test (tfld)) {// 잘못된 문자에 대한 이메일 테스트

    error =“유효한 이메일 주소를 입력하십시오 .n”;
    } else if (fld.value.match (illegalChars)) {

    error =“유효한 이메일 주소를 입력하십시오 .n”;
    }
    반환 오류;
    }

  24. 33
  25. 34
  26. 35
  27. 36
  28. 37
  29. 38
  30. 39
  31. 40

당신은 어떻게 생각하십니까?

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터 처리 방법 알아보기.