繁体   English   中英

无法获得asp:RegularExpressionValidator工作

[英]can't get an asp:RegularExpressionValidator to work

我有一个问题,正在使用一个正则表达式字段验证器为我正在尝试更新的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?

你应该删除双反斜杠:

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

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

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

您可以尝试使用此代码

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM