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

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

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

4

3 回答 3

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

于 2013-10-15T15:20:20.653 回答
1

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

这个效果很好:

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

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

ValidateEmptyText="false"
于 2013-10-15T15:29:38.663 回答
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" />
于 2013-10-15T15:32:21.113 回答