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



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

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

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

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

好的,

我现在有你的问题,你应该尝试以下任何正则表达式..如有任何其他疑问,请告诉我

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

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

这个效果很好:

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

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

ValidateEmptyText="false"

您希望同时使用 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" />

相关内容