2016-04-27 126 views
-2

我想变更输入的字符串是否为电子邮件格式。我有点困惑。我试图写下面的代码,但失败了。请帮助我。使用Javascript进行电子邮件验证检查

Javascript Code: 
<script> 
      function emailValidation(id) 
      { 
     var emailPattern = var emailPattern = /^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/; 
       if (emailPattern.test(id) === false) 
       { 
        alert("not a valid email address."); 
       }    
       document.getElementById(id).value = ""; 
      } 
     </script> 

HTML Code: 
      <input type="text" id="empemail" onblur="emailValidation('empemail')" name="email" placeholder="eg: [email protected]" required=""> 
+0

这是什么:'var emailPatt ern = var emailPattern = ...' 请尝试删除一个。 – John

+7

这个问题已经有了答案。 http://stackoverflow.com/questions/46155/validate-email-address-in-javascript – springrolls

回答

1

您还可以使用HTML5通过改变类型email验证您的电子邮件输入字段:

<input type="email" name="email"> 

如果你不想使用HTML5和依赖于JavaScript,你可以使用this thread如@springrolls建议。您的JavaScript代码中也有错误:

var emailPattern = var emailPattern = ... 

而且您也没有正确地从输入字段传递值。这就是为什么你的函数总是返回false。试试这个jsfiddle

function emailValidation(id) 
{ 
    var emailPattern = /^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/; 
    var email = document.getElementById(id).value 
    if (emailPattern.test(email) === false) 
    { 
     alert("not a valid email address."); 
    }    
} 

而且,不要忘了还检查电子邮件输入服务器端。如果你使用的是PHP,你可以使用这样的东西:

$email = $_POST["email"]; 
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { 
    $error = "Invalid email format"; 
} 
0

试试这个模式。

var emailPattern = /[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/i; 

可以通过添加类型= “电子邮件” 输入栏 实施例测试与https://regex101.com/

+0

user3250190

0

也可以使用HTML5验证图案:

<!DOCTYPE HTML> 
<html> 
<head> 
<title>Test Email Submit</title> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 
</head> 
<body> 
    <form action="/submitForm"> 
    Email:<br> 
    <input type="email" name="email"><br> 
    <input type="submit" value="Submit"> 
    </form> 
</body> 
</html> 
+0

你为什么给出了已发布的相同答案?没用.. – Mainone

+0

/\[email protected]\S+/([email protected]) - 测试错误。我不明白为什么......需要帮助 – user3250190

+0

@Mainone有人在我写作的时候发帖,而不是我打算转发。 –

0
function isValidEmail(email) { 
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; 
    if (!filter.test(email)) { 
     return false; 
    } 
return true; 
} 

如果电子邮件是有效的,那么它返回true,否则返回false

+0

尝试过,但即使我输入了有效的电子邮件,它也会返回false。 – user3250190

+0

@ user3250190 - 您应该通过有效的电子邮件地址.. https://jsfiddle.net/gjzrjep7/ – MH09