我在使用正则表达式字段验证程序为我正在尝试更新的asp页面工作时遇到问题。
这是asp:Panel剥离到重要位:
<asp:Panel ID="pnlEmailAddressCollection" runat="server">
<div id="POMInput-wrapper">
<div class="POMInput-FieldText">
<span class="POMInput-wrapper-text">Name:</span>
<br />
<span class="POMInput-wrapper-text">Email Address:</span>
<br />
</div>
<div class="POMInput-FieldEntry">
<asp:TextBox ID="txtEmailAddress" name="emailAddress" runat="server" CssClass="textInput"></asp:TextBox>
<asp:TextBox ID="txtUserName" runat="server" name="firstName" CssClass="textInput"></asp:TextBox>
</div>
<asp:RequiredFieldValidator ID="rfvNameValidator" runat="server"
ErrorMessage="Please enter your name"
ControlToValidate="txtUserName"
Display="None" />
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ErrorMessage="Please enter your email address"
ControlToValidate="txtEmailAddress"
Display="None" />
<asp:RegularExpressionValidator ID="rfvEmailValidator2" runat="server"
ErrorMessage="Please enter a valid email address"
ControlToValidate="txtEmailAddress"
Display="None"
ValidationExpression="^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}$" />
<asp:ValidationSummary ID="ValidationSummary1" runat="server"
ShowMessageBox="true"
ShowSummary="false"
EnableClientScript="true" />
</div>
</asp:Panel>
目前我输入的任何电子邮件都失败了.asp:RequiredFieldValidator按预期工作。
我在测试项目中测试了正则表达式,并且正则表达式似乎很好(在有效的电子邮件上返回true,在无效的电子邮件上返回false)。我是否错误地设置了asp:RegularExpressionValidator?
答案 0 :(得分:1)
你应该删除双反斜杠:
ValidationExpression="^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$"
请注意,您只需要一个反斜杠。如果您要从后面的代码设置此表达式,则您提供的字符串是正确的。但是在aspx中你不必逃避反斜杠。
目前接受的电子邮件地址类似于abc @ abc {backslash} .com
答案 1 :(得分:0)
您可以尝试使用此代码
ValidationExpression="[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"
注意:您可以删除^和$符号
答案 2 :(得分:0)
正则表达式在.NET(服务器端)中工作,但由于客户端JScript实现为documented in the Remarks section而失败。要验证这一点(它通过服务器端验证),请将验证器上的EnableClientScript
属性设置为false。
然后撤消该更改并验证正则表达式将在客户端传递。如果您更容易,可以使用online tester。