2013-10-15 170 views
-1

我有以下的代码来验证电子邮件地址:允许空文本框,但不允许输入无效

<asp:TextBox ID="txtPersonalEmail" runat="server" Text='<%# Bind("PersonalEmail") %>' Width="185px" />      
<%-- validate for a valid email address entered--%> 
<asp:RegularExpressionValidator ID="EmailValidator" runat="server" ErrorMessage="*This is not a valid email address" ValidationExpression="\[email protected]\S+\.\S+" ControlToValidate="txtPersonalEmail"/> 

的电子邮件地址是不是必需的,但如果输入一个电子邮件地址,它必须是以正确的格式。目前,可以输入格式不正确的电子邮件地址,但会返回错误消息,但文本框中的值仍然可以提交。

有关如何防止格式不正确的电子邮件被提交,但仍然允许空白值的任何建议?

+1

你有什么问题? – MikeSmithDev

+0

'RegularExpressionValidator'应该允许空白值。 – greg84

+0

然后删除'RequiredFieldValidator',你没有告诉我们;-) –

回答

2

好吧,我得到了你的问题,现在你应该尝试以下任一正则表达式的。请让我知道任何其他查询

1) ValidationExpression="^([a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]){1,70}$" 

2) ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" (As suggested by James Johnson in his answer) 

有你结合RegularExpressionValidatorRequiredFieldValidator

据我所知RegularExpressionValidator将允许空白文本框,除非你有必填字段校验

+2

正是......这就是为什么我想知道他的问题是什么。 – MikeSmithDev

+0

@MikeSmithDev ok ..我在想可能是我错了,但现在我确定 – Dhaval

+0

是的,没有输入是必需的,除非正则表达式强制执行。 –

1

RegularExpressionValidator组合绝对是你想要的,或者如有必要也可以使用一个CustomValidator。如果验证器给你提供了问题,你可能想要使用不同的正则表达式。

这一个效果很好:

ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" 

我不记得它是否适用于这个特定的验证,但有可能是一个ValidateEmptyText属性,你可以利用:

ValidateEmptyText="false" 
0

你想以验证RequiredFieldValidatorRegularExpressionValidator

RequiredFieldValidator验证文本框是否为空。

RegularExpressionValidator验证在文本框中输入的电子邮件地址是否有效。

<asp:TextBox ID="EmailTextBox" runat="Server" /> 
<asp:RequiredFieldValidator 
    ControlToValidate="EmailTextBox" Display="Dynamic" 
    Text="(Required)" 
    ErrorMessage="Email is required." 
    runat="Server" 
    ID="EmailRequiredFieldValidator" /> 
<asp:RegularExpressionValidator 
    ControlToValidate="EmailTextBox" 
    Text="(Invalid)" 
    ValidationExpression="\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" 
    ErrorMessage="The e-mail address you specified is not well-formed." 
    runat="Server" 
    ID="EmailRegularExpressionValidator" 
    Display="Dynamic" />