使用JavaScript验证电子邮件地址文本框

Ram*_*ker 30 javascript

我要求验证用户从文本框中退出时输入的电子邮件地址.
我已经google了这个,但我得到了表单验证JScript; 我不想要表单验证.我想要文本框验证.
我写了下面的JScript,但"如果电子邮件无效,它不会返回同一页面".

 function validate(email) {

            var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
            //var address = document.getElementById[email].value;
            if (reg.test(email) == false) 
            {
                alert('Invalid Email Address');
                return (false);
            }
 }
Run Code Online (Sandbox Code Playgroud)

Ben*_*Ben 54

假设你的正则表达式是正确的:

在你的脚本标签内

function validateEmail(emailField){
        var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;

        if (reg.test(emailField.value) == false) 
        {
            alert('Invalid Email Address');
            return false;
        }

        return true;

}
Run Code Online (Sandbox Code Playgroud)

在您的文本字段中:

<input type="text" onblur="validateEmail(this);" />
Run Code Online (Sandbox Code Playgroud)

  • {2,4} 应替换为 {2,},因为有更长的 TLD,例如博物馆。 (3认同)
  • 您的回答不符合 RFC 6532。在电子邮件的左侧和右侧部分允许使用口音。如果你有一个法国用户(像我一样),并且它的电子邮件包含像 Testé@exemple.com 这样的口音,它就不会工作。https://regex101.com/r/oN1qD0/1 也w,他们的新域扩展包含超过 4 个字符,如 .quebec ... (2认同)

CD0*_*001 9

首先 - 我推荐来自Hexillion的电子邮件验证器RegEx:http://hexillion.com/samples/

它非常全面 - :

<input type="email" />
Run Code Online (Sandbox Code Playgroud)

我想你想在你的JavaScript中使用一个函数:

<input type="email" pattern=".+@foo.com" />
Run Code Online (Sandbox Code Playgroud)

在HTML输入中,您需要使用onblur触发事件 - 执行此操作的简单方法是简单地添加以下内容:

^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9\-](?!\.)){0,61}[a-zA-Z0-9]?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9\-](?!$)){0,61}[a-zA-Z0-9]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$
Run Code Online (Sandbox Code Playgroud)

当然,这缺乏一些健全性检查,不会进行域验证(必须在服务器端完成) - 但它应该给你一个非常可靠的JS电子邮件格式验证器.

注意:我倾向于使用match()字符串方法而不是test()RegExp方法,但它不应该有任何区别.


San*_*thi 5

结果isEmailValid可用于测试电子邮件的语法是否有效。

var validEmailRegEx = /^[A-Z0-9_'%=+!`#~$*?^{}&|-]+([\.][A-Z0-9_'%=+!`#~$*?^{}&|-]+)*@[A-Z0-9-]+(\.[A-Z0-9-]+)+$/i
var isEmailValid = validEmailRegEx.test("Email To Test");
Run Code Online (Sandbox Code Playgroud)