允许空文本框,但不允许无效输入

时间:2013-10-15 15:13:37

标签: asp.net vb.net validation

我有以下代码来验证电子邮件地址:

<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="\S+@\S+\.\S+" ControlToValidate="txtPersonalEmail"/>

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

有关如何防止提交格式错误的电子邮件的任何建议,但仍允许空白值?

3 个答案:

答案 0 :(得分: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将允许文本框中的空白,除非您将其与必填字段验证器结合使用

答案 1 :(得分:1)

RegularExpressionValidator绝对是您想要的,或者如果有必要,您也可以使用CustomValidator。如果验证器给你带来问题,你可能想要使用不同的正则表达式。

这个很好用:

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

我不记得它是否可用于此特定验证器,但可以使用ValidateEmptyText属性:

ValidateEmptyText="false"

答案 2 :(得分:0)

您想要同时使用 RequiredFieldValidator RegularExpressionValidator 进行验证。

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" />