使用正则表达式进行电子邮件地址验证

时间:2011-11-14 19:09:46

标签: javascript jquery html forms

我需要正则表达式方面的帮助,而且我不知道该怎么做。

如何在用户输入正确的电子邮件之前阻止用户提交?

电子邮件格式必须类似于emailaddress@bri.golia.com

应该接受的电子邮件地址只能包含域名@ bri.golia.com,其他任何内容都不应该让用户提交表单,我该怎么办呢?

            <form method="post" action="site.com/mail.php" name="SampleForm" enctype="multipart/form-data">


                        <div class="info">
                            <h2 class="forms_heading" name="Contact">Contact Information</h2>
                                <br />
                                <div class="required">
                                    <label for="name">Name:</label>
                                    <input type="text" for="name" id="name" name="RequesterName" required="required"  />

                                </div>
                                <div class="required">
                                    <label for="email">E-mail:</label>
                                    <input type="text" for="email" id="email" name="RequesterEmail" required="required"   />
                                </div>

                                <div class="required">
                                    <label for="phone">Phone:</label>
                                    <input type="text" for="phone" id="phone" name="RequesterPhone" required="required"   />
                                </div>

                                <br />
                                <br />
                        </div><!-- end info -->





                            <br />
                            <input type="submit" value="Submit" class="submit_button"  />

4 个答案:

答案 0 :(得分:0)

假设您使用的是jQuery Validation Plugin,您应该可以添加自定义regex验证方法。

我没有测试过这个,但它应该是关闭的:

$.validator.addMethod(
        "regex",
        function(value, element, regexp) {
            var check = false;
            var re = new RegExp(regexp);
            return this.optional(element) || re.test(value);
        },
        "Please check your input."
);

使用上述方法,现在您可以传递验证正则表达式:

$("#input1").rules("add", { regex: "^[a-zA-Z]+@yourdomain\.com$" });

显然,您可以根据需要调整正则表达式,直到满足您的要求为止。例如,我已经包含了一个基本的正则表达式来验证域名。

答案 1 :(得分:0)

正则表达式字符串

^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$

我要么使用RegEx类型的ASP验证器,要么在按钮点击方法上进行正则表达式比较。

可在此处找到一些其他RegEx字符串:

以下是Text字段和RegEx验证器的一些示例ASP:

    <asp:TextBox ID="txtEmail" runat="server" />
    <asp:RegularExpressionValidator ID="valEmail" ControlToValidate="txtEmail" 
            runat="server"
            ValidationExpression="^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$"
            ErrorMessage="You need a valid e-mail address" /> 

此外,这里有一个很好的搜索ASP中的验证器

  • Google:asp regex验证器

答案 2 :(得分:0)

使用正则表达式添加pattern属性:

<input type="text" for="email" id="email" name="RequesterEmail" required="required" pattern="\b[A-Za-z0-9._%+-]+@bri\.golia\.com\b"  />

另见jsfiddle

=== UPDATE ===

要更改错误文本,请覆盖invalid方法:

document.getElementById('email').oninvalid = function(e) {
    e.target.setCustomValidity('');
    if (!e.target.validity.valid) {
        e.target.setCustomValidity("My custom text.");
    }
};

另请参阅我更新的jsfiddle

答案 3 :(得分:0)

我不认为你需要使用正则表达式,一个带indexOf的简单子字符串是anuf来提取电子邮件的第一部分和最后部分然后检查它是否是@bri.golia.com

var str_email = "testblah@bri.golia.com";

var str_at_domain = str_email.substring(str_email.indexOf('@'));

var userEmail = str_email.substring(0, str_email.indexOf('@'));
相关问题