ASP.NET比较验证器以匹配2个电子邮件地址

时间:2013-04-24 14:30:30

标签: asp.net

我想使用compare验证器验证2个字段 1)电子邮件地址(必填字段 - 使用必填字段验证器) 2)确认电子邮件地址

如果我在确认电子邮件地址的电子邮件地址AND abc@abc.com中输入abc@abc.com,它将正常工作。 但是当我在其中一个文本框中的电子邮件地址后面添加空格时,会说两封电子邮件都不匹配,这是不可取的。 怎么解决这个? 如果我能够通知用户电子邮件地址中不允许这样的空间,对用户会有帮助。

2 个答案:

答案 0 :(得分:1)

好吧,如果用户添加空格,则电子邮件不匹配,因此错误消息是正确的。如果要为允许的字符添加其他验证,则可以在每个字段上使用RegularExpressionValidator。以下是this regex的示例:

<asp:RegularExpressionValidator 
     id="RegValid" 
     ControlToValidate="txtEmail" 
     ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" 
     ErrorMessage="Invalid email address"
     runat="server" >
</asp: RegularExpressionValidator>

看起来您需要更复杂的验证,因此您可以使用自定义验证器替换所有内容并测试所有内容。标记:

<asp:CustomValidator runat="server" OnServerValidate="EmailValidate" Display="Dynamic" ControlToValidate="txtEmail2" ID="vldEmail"></asp:CustomValidator>

代码背后:

protected void EmailValidate(object source, ServerValidateEventArgs args)
{
    if(txtEmail1.Text != txtEmail2.Text) {
        args.IsValid = False
        vldEmail.ErrorMessage = "Emails are different"
    }else {
        //for each condition that fails set IsValid to false and choose the error message:
        args.IsValid = False
        vldEmail.ErrorMessage = "..."
    }
}

答案 1 :(得分:0)

regex = '^(?=.*[A-Za-z0-9])[\S]*$'

Source

我自己试了很好的工作:)