C# can';无法让asp:RegularExpressionValidator工作

C# can';无法让asp:RegularExpressionValidator工作,c#,asp.net,C#,Asp.net,我在尝试更新asp页面时遇到了一个问题:如何让regex字段验证器工作 以下是asp:Panel的重要部分: <asp:Panel ID="pnlEmailAddressCollection" runat="server"> <div id="POMInput-wrapper"> <div class="POMInput-FieldText"> <span class="POMInput-wrapper-t

我在尝试更新asp页面时遇到了一个问题:如何让regex字段验证器工作

以下是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?

您可以尝试使用此代码

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

备注:您可以删除^S和$SYMBOL

您应该删除双反斜杠:

ValidationExpression="^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$" 
请注意,您在仅表示一个的位置放置了两个反斜杠。如果要从代码隐藏设置此表达式,则提供的字符串是正确的。但在aspx中,您不必逃避反斜杠


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

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


然后撤消该更改并验证正则表达式是否将在客户端传递。如果方便的话,您可以使用。

其他验证有效吗?是的,RequiredFieldValidator可以像广告中所宣传的那样工作。您是否尝试过暂时使用一个更简单、简单且总是通过的正则表达式?您需要确定这是您的表达式还是验证器的连接。请尝试此正则表达式\w+([-+.]\w+*@\w+([-.]\w+*\。\w+([-.]\w+*.@n8wrl good call-“*”通过验证。我猜它不喜欢表达的一部分。您需要对表达式进行url编码吗?这也不起作用。我想知道我的标记中是否有其他东西把这搞砸了…我将您的验证程序标记复制粘贴到我的项目中,将其连接到第一个随机文本框控件,所有操作都按照您的预期进行(我对上面提到的双反斜杠问题进行了更正)。所以,如果你说其他验证器为你工作,那就有点可疑:)我最后只是把它切换到标准表单字段和javascript验证。页面中有太多的其他标记,无法尝试缩小问题所在的位置-我可能会在某个时候重新讨论它。这是以前的开发人员遗留下来的页面。