2009-03-24 10 views
4

Lorsque j'utilise le contrôle .Net RegularExpressionsValidator, l'expression Validation correspond au texte EXACT. Quand je dis cela, je veux dire, pour la chaîne que je lui donne à valider, si elle s'écarte du motif regex, la chaîne ne valide pas..Net RegularExpressionValidator correspond différemment à la classe Regex

ex: (([0-1] [0-9]) | ([2] [0-3])): ([0-5] [0-9]) si indiqué dans la Le contrôle RegularExpressionsValidator ne correspond qu'aux chaînes comme -> 12:00, 07:15, 23:59 mais ne correspond pas aux chaînes 12: 00foo, bar23: 00, foobar. Maintenant, lorsque j'utilise la classe Regex dans le code derrière et lui donne la même expression régulière, elle correspond à toutes les chaînes qui contiennent une correspondance et tous les autres caractères. (En utilisant la même expression régulière que le dernier exemple) si j'utilise la classe Regex, les chaînes suivantes correspondent -> 12:00, 07:15, 23:59 et 12: 00foo (contient un match), bar23: 00 (contient une correspondance).

Y a-t-il une raison pour laquelle ils sont traités différemment et existe-t-il un moyen d'imiter le même comportement que le contrôle RegularExpressionValidator?

Merci à l'avance!

Répondre

7

En ce moment, le validateur regex traite votre chaîne comme une ligne de texte. C'est implicitement mettre dans les matchers^et $ au début de l'expression rationnelle.

Il est comme dire:

^(([0-1][0-9])|([2][0-3])):([0-5][0-9])$ 

L'expression ci-dessus dans le Regex Class produira le même résultat que le contrôle du validateur.

0

Un moyen simple et universel pour obtenir votre expression régulière pour correspondre à une chaîne est de forcer exactement match dès le début à la fin de la chaîne comme ceci:

^pattern$ 
Questions connexes