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}$" 

1 つだけを意味するところに 2 つのバックスラッシュを入れていることに注意してください。コード ビハインドからこの式を設定する場合、指定した文字列は正しいです。ただし、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 に答える