为什么我的电子邮件验证没有返回我设置的错误消息?

时间:2019-08-21 13:44:25

标签: javascript

我通过Javascript进行了电子邮件验证。我知道我们可以通过HTML进行验证,但是我需要使用Javascript。在此问题中使用了两种方法。首先是条件,其次是正则表达式匹配。如果输入的电子邮件有误,则会在其旁边显示一条错误消息,并且如果没有错误,则该表单将定向到PHP页面。就我而言,我输入了我希望从中收到错误的电子邮件,但它会立即定向到PHP页面,这是错误的。

我想要的应该没有'。'电子邮件的第一个和最后一个索引中的“ @”

应该有一个@和。按照通常的电子邮件结构

只能有1个@字符

包括所有字符。

这是html后面的我的javascript代码,

const name = document.getElementById('name')
const lname = document.getElementById('lname')
const co = document.getElementById('co')
const email = document.getElementById('email')
const form = document.getElementById('form')
const error1 = document.getElementById('error1')
const error2 = document.getElementById('error2')
const error3 = document.getElementById('error3')
const error4 = document.getElementById('error4')

form.addEventListener('submit', (e) => {
  let messages = []

  var re =/^[A-Za-z]+$/;
  if(!name.value.match(re)){
       messages.push('error')
        var err1="Contains number";
  }
  else{
      err1="";
  }
    if(!lname.value.match(re)){
       messages.push('error')
        var err2="Contains number";
  }

  else{
      err2="";
  }
  var t=co.value;
  //we have a problem in contact number
    if(t[4]!='-'||t[8]!='-'||t[0]!=0||t[1]!=9||t.length!=13){
        messages.push('error')
        var err3="Must follow the format";
    }

  else{
      err3="";
  }

    var m=email.value;
    var r=email.value.length;
    var atposition=email.indexOf("@"); 
    var dotposition=email.lastIndexOf("."); 
    var i, count, dot1;
    for(i=0; i<r; i++){
        if(m[i]=='@'){
            count++;
        }
        if(m[i]=='.'){
            dot1++;
        }
    }
    if(atposition<1||atposition==m[r-1]||count>1||dotposition==m[r-1]||m[0]=='.'||dot1==0||count==0){
         messages.push('error')
        err4.push('Must follow email format')
    }

  if (messages.length > 0) {
    e.preventDefault()
    error1.innerText = err1
    error2.innerText = err2
    error3.innerText = err3
    error4.innerText = err4
  }
})

这是我进行正则表达式匹配的方法:

var re=/^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/     
if(!email.value.match(re)){
 messages.push('error')
            err4.push('Must follow email format')
}    

1 个答案:

答案 0 :(得分:0)

try this one.
var mailformat =  /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9] 
{2,4})+$/;
var email = $('#email').val();
if(!mailformat.test(email_value)){
    e.preventDefault();
    $('#error-email-txt').html('Enter valid email address');
    $('#error-email').css("display",'block');
 }