2015-02-01 13 views
4

전자 메일 유효성 검사가 제대로 작동하지 않는 이유를 해결하고 문제를 해결하려고합니다. 유럽 ​​주소 ([email protected])와 [email protected]을 제외하고는 너무 많은 ... (점)이있는 곳에서 유효하지 않은 이메일을 발견했다고 가정합니다. 하지만 지금은 그 점을 제외하고는 점 하나를 더 이상 넣지 않으면 @를 가지고있는 한 입력을 마치지 않으면 (.) 점을 추가하지 마십시오. 누군가 내가 잘못 가고있는 곳에서 나를 도울 수 있습니까?jQuery 유효성 검사 전자 메일 유효성 검사 관련 문제

<script> 
    $("#form").validate({ 
    rules: { 
     firstname_1: { 
      required: true 
     }, 
     email_1: { 
      required: true, 
      email: true 
     }, 
     // Same for other fields 
    }, 
    messages: { 
     firstname_1: "This field is required.", 
     email_1>: "Please enter valid email address.", 
     // Repeat for other fields 
    } 
}); 
function isValidEmail(email_1) 
{ 
    return /^[a-z0-9]+([-._][a-z0-9]+)*@([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,4}$/.test(email_1) 
     && /^(?=.{1,64}@.{4,64}$)(?=.{6,100}$).*/.test(email_1); 
} 
</script> 
+0

http://davidcel.is/blog/2012/09/06/stop-validating-email-addresses-with-regex/ –

+1

이메일 주소 또는 도메인의 수에 엄격한 제한이 없습니다. 이름에 포함될 수 있습니다. 무엇을 성취하려고합니까? –

+0

주소가 존재하지 않아도 기술적으로 유효합니다. 전자 메일 주소의 유효성을 확인하는 유일한 방법은 전자 메일에 고유 토큰을 보내고 사용자가 응답하도록 (대개 링크를 클릭하여)합니다. –

답변

7

올바른 정규식이 있다고 가정하면 the .addMethod() method을 사용하여 고유 한 규칙을 만들어야합니다.

$("#form").validate({ 
    rules: { 
     firstname_1: { 
      required: true 
     }, 
     email_1: { 
      required: true, 
      myEmail: true // <- declare your custom rule 
     }, 
     // Same for other fields 
    }, 
    messages: { 
     firstname_1: "This field is required.", 
     email_1: "Please enter valid email address.", 
     // Repeat for other fields 
    } 
}); 

// create your custom rule 
jQuery.validator.addMethod("myEmail", function(value, element) { 
    return this.optional(element) || (/^[a-z0-9]+([-._][a-z0-9]+)*@([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,4}$/.test(value) && /^(?=.{1,64}@.{4,64}$)(?=.{6,100}$).*/.test(value)); 
}, 'Please enter valid email address.'); 

참고 : 또한 messages 내에서 필드 이름에 문법/맞춤법 오류가 발생했습니다. email_1>이 아니라 email_1이어야합니다.