4

我在让正则表达式字段验证器为我尝试更新的 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?

4

3 回答 3

1

您应该删除双反斜杠:

ValidationExpression="^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$" 

请注意,您将两个反斜杠放在您仅指一个的位置。如果您要从后面的代码中设置此表达式,则您提供的字符串是正确的。但在 aspx 中,您不必转义反斜杠。

目前接受的电子邮件地址类似于 abc@abc{backslash}.com

于 2012-10-23T18:30:25.040 回答
0

您可以尝试使用此代码

ValidationExpression="[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}" 

注意:您可以删除 ^ 和 $ 符号

于 2012-10-23T17:59:18.797 回答
0

正则表达式在 .NET(服务器端)中有效,但由于客户端 JScript 实现而失败,如备注部分所述。要验证这一点(它通过服务器端验证),请将EnableClientScript验证器上的属性设置为 false。

然后撤消该更改并验证正则表达式将在客户端传递。如果对您来说更容易,您可以使用在线测试仪

于 2012-10-23T19:27:11.993 回答