无法获得asp:RegularExpressionValidator工作

时间:2012-10-23 17:21:39

标签: c# asp.net

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

3 个答案:

答案 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