2010-02-23 5 views
2

Dans mon formulaire Web ASP.NET, j'ai un multiligne TextBox qui doit être validé avec RegularExpression Validator. La zone de texte doit contenir une ou plusieurs chaînes "a" (juste un caractère "a", rien d'autre).Validateur multiligne à expression régulière

Jusqu'à présent, j'obtenu ces expressions régulières pour mon objet RegularExpressionValidator:

(?m:(^a$)+) 
(?m:\A(^a$)+\Z) 
(?m:^a$) 

et quelques autres. Aucun des deux ne fonctionne. Je suppose qu'il y a quelque chose de fondamental que je ne comprends pas encore.

Pourriez-vous s'il vous plaît me dire où je me trompe?

Voici le code impliqué.

Bouton (juste pour postbacks):

<asp:Button ID="Button1" runat="server" Text="Button" /> 

Le TextBox:

<asp:TextBox ID="TextBox1" runat="server" Rows="10" TextMode="MultiLine"></asp:TextBox> 

Et le regex validateur:

<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" 
    ControlToValidate="TextBox1" ErrorMessage="RegularExpressionValidator" 
    ValidationExpression="(?m:(^a$)+)"></asp:RegularExpressionValidator> 

Il n'y a rien d'autre sur ce formulaire Web. J'ai seulement ajouté ces contrôles et propriétés modifiées. J'ai même fait tout cela en utilisant VS GUI.


En utilisant CustomValidator et faire Regex.Match(TextBox1, @"(?m:(^a$)+)") en elle fonctionne très bien. Quelque chose ne va pas avec RegularExpressionValidator je suppose.

+0

Pourriez-vous fournir quelques exemples de chaînes valides? Chaque ligne peut contenir plusieurs caractères 'a' ou un seul caractère 'a'? –

+0

Salut Marco! C'est juste un seul caractère 'a', c'est pour la simplicité. Mais en réalité ce n'est pas le but. Ça pourrait être n'importe quelle expression. – kishkin

Répondre

0

Si vous voulez faire correspondre plusieurs lignes, n'oubliez pas de faire correspondre les terminaisons de ligne; ils ne sont pas impliqués dans $.

(?m:(^a$\r?\n?)+) 

peut fonctionner mieux.

Cela correspond

a 

ou

a 
a 
a 

etc.

Et, puisque vous demandez un tutoriel, comment regular-expressions.info au sujet?

+0

Merci Tim, mais ça ne marche pas. (? m: (^ a \ r? \ n? $) +) celui-ci ne fonctionne pas non plus. Mais (? M: (^ a \ r? \ N?) +) Fait. Il y a quelque chose d'autre à propos de $ :) – kishkin

+0

Merci pour le lien! C'est fait. Mais je vais y jeter un coup d'œil, au cas où j'aurais raté la réponse à ma question. – kishkin

+0

La dernière regex que vous avez écrite dans votre commentaire est exactement la même dans ma réponse. Que voulez-vous dire? –

Questions connexes