我有以下代码来验证电子邮件地址:
<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"/>
不需要电子邮件地址但是如果输入了电子邮件地址,则必须采用正确的格式。目前,可以输入格式不正确的电子邮件地址,它会返回错误消息,但仍可以提交文本框中的值。
有关如何防止提交格式错误的电子邮件的任何建议,但仍允许空白值?
答案 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)
您是否将RegularExpressionValidator
与RequiredFieldValidator
??
据我所知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" />