我有以下代码来验证电子邮件地址:
<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)
您是否将RegularExpressionValidator
与RequiredFieldValidator
结合起来?
据我所知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" />