2010-03-16 3 views
0

J'ai une zone de texte et un validateur d'expressions régulières qui y sont appliquées. Je veux m'assurer que la seule chaîne autorisée entrée dans la zone de texte est "Anything Entered" ou "Something Else" ou "Another String" sinon je veux qu'une erreur soit affichée.L'expression régulière asp.net ne fonctionne pas comme prévu

C'est l'expression régulière, j'ai jusqu'à présent:

ValidationExpression="(^Anything Entered)$|(^Something Else)$ |(^Another String)$" 

Cependant, lorsque j'entre les chaînes valides supposées l'erreur est affiché. Je ne peux pas comprendre ce qui ne va pas avec l'expression. Toute aide serait grandement appréciée.

+0

Etes-vous sûr qu'il est correct de mettre des symboles "^" et "$" sur les différents côtés des supports? –

Répondre

2

RegularExpressionValidator ajoute automatiquement les éléments^et $. Il suffit d'utiliser

"(Anything Entered|something Else|Another String)" 
2
"^(Anything Entered)|(Something Else)|(Another String)$" 

Notez l'utilisation de ^ et $.
Bien que, comme d'autres l'ont déjà souligné, l'utilisation de ^ $ est redondante ici.

"(Anything Entered|Something Else|Another String)" est très bien.

+0

Pas tout à fait. Cela dit "commence par 'Tout ce qui est entré' OU contient 'Quelque chose d'autre' OU se termine par 'Une autre chaîne' Vous devrez mettre les trois alternatives dans un ensemble de parens avec les ancres en dehors d'elles -'^(foo | baz) $ '- mais comme @Jens l'a souligné, les ancres sont redondantes dans un Validator –

-1

(^Anything Entered)$|(^Something Else)$ |(^Another String)$

En regex^correspond au début de la chaîne et $ correspond à la fin de la chaîne. Votre expression rationnelle est équivalente à (^Anything Entered$)|(^Something Else$)|(^Another String$). Il correspond à "Anything Entered" ou "Another String" mais il ne correspond pas à "Something Else" car il ne peut pas y avoir d'espace après la fin de la chaîne ().

+0

Quel est le problème avec la réponse? – tiftik

Questions connexes