簡體   English   中英

使用正則表達式進行電子郵件地址驗證

[英]Using a regex for email address verification

我需要有關正則表達式的幫助,但我不知道該如何處理。

在用戶輸入正確的電子郵件之前,如何防止用戶提交?

電子郵件格式必須類似於此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"  />

假設您正在使用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$" });

顯然,您可以根據需要調整正則表達式,直到滿足您的要求。 出於示例目的,我包括了一個用於驗證域名的基本正則表達式。

正則表達式字符串

^([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驗證器,要么對按鈕的click方法進行Regex比較。

可以在這里找到其他一些RegEx字符串:

這是“文本”字段和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正則表達式驗證器

使用正則表達式添加pattern屬性:

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

另請參閱我的jsfiddle

===更新===

要更改錯誤文本,請覆蓋invalid方法:

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

另請參閱我更新的jsfiddle

我不認為您需要為此使用正則表達式,帶有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('@'));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM