2009-02-19 6 views
5

J'ai un HtmlTextArea et je veux limiter le nombre de caractères utilisateurs peut entrer à 500.saisie de texte Validation sur plusieurs lignes lorsque vous utilisez .NET

Actuellement, je l'ai utilisé un RegularExpressionValidator ...

RegularExpressiondValidator val = new RegularExpressiondValidator(); 
val.ValidationExpression = "^.{0,500}$"; 
val.ControlToValidate = id; 
val.ErrorMessage = "blah"; 

... c'est bien quand le texte est entré sur une seule ligne mais il échoue instantanément la validation chaque fois que le texte inclut un nouveau caractère de ligne (c'est-à-dire est multi-ligne).

Je me rends compte qu'il existe différents moteurs d'expressions régulières et je dois tester avec le. NET (quelqu'un peut-il me désigner dans le sens d'un bon en ligne?) Mais j'ai essayé quelques autres, y compris avant " (? m) "à ma chaîne d'expression, et en remplaçant^et $ avec \ A et \ Z mais jusqu'ici pas de chance.

Une autre question connexe, puis-je éviter d'utiliser une expression régulière et relier ce validateur à ma propre fonction de validation?

Répondre

6

le "." n'inclut pas de nouvelles lignes.

^((|. \ N) {} 0500) $

This page pourrait aussi aider, sa feuille de triche regex.

+1

Vous devez utiliser des parenthèses à la place des parenthèses. Les parenthèses indiquent Or mais vous avez ajouté le | dans leur aussi bien. – JaredPar

+0

Oui, je l'ai immédiatement mis à jour après avoir réalisé que j'avais fait cela. – ccook

+0

J'y ai réfléchi un peu plus et je crois que ça aurait encore marché. Le | dans ce cas était juste superflu. Je ne peux pas me souvenir à 100% si \ n dans un [] est traité comme 2 caractères ou un saut de ligne. – JaredPar

6

Changer votre regex au

"^(.|\n){0,500}$"; 

ci-dessous. le personnage correspond à tout, sauf à un retour à la ligne. La clause or va résoudre votre problème.

1

Je le ferais de deux façons, si vous connaissez javascript et que vous voulez restreindre la longueur du caractère côté client, vous pouvez le faire avec jQuery (une bibliothèque d'extension javascript populaire). Ensuite, effectuez un contrôle similaire côté serveur avec un validateur personnalisé ou dans votre méthode de clic sur le bouton.

Vous pouvez également activer et désactiver les validateurs ASP.Net avec javascript.

+0

Intéressant, mais ne perdez-vous pas la «complétude» du contrôle? Autrement dit, la moitié de la validation est dans le validateur côté serveur, tandis que l'autre moitié est dans la page? – ccook

+0

vous êtes la solution est évidemment le plus élégant. Je pensais juste que je lancerais une alternative. J'ai des validateurs ASP.Net pour certaines choses. – hunter

Questions connexes