2009-10-06 4 views
4

Je souhaite utiliser un ASP.NET RegularExpressionValidator pour limiter le nombre de mots dans une zone de texte. (Le RegularExpressionValidator est ma solution préférée car elle effectuera les contrôles côté client et serveur).Utilisez un RegularExpressionValidator pour limiter un nombre de mots?

Alors, quel serait le bon Regex à mettre dans le RegularExpressionValidator qui compte les mots et applique une limite de mots? Pour, disons, 150 mots. (NB: je vois que this question est similaire, mais les réponses données semblent aussi s'appuyer sur un code tel que Split() donc je ne pense pas que l'un d'entre eux puisse se connecter à un RegularExpressionValidator, c'est pourquoi je demande nouveau)

Répondre

5

Depuis ^ et $ est implicitly set with RegularExpressionValidators, utilisez les touches suivantes:

(\S*\s*){0,10} 

le 0 ici permet des chaînes vides (plus précisément 0 mots) et 150 est le nombre maximum de mots à accepter. Ajustez-les au besoin pour augmenter/diminuer le nombre de mots acceptés. L'expression rationnelle ci-dessus n'est pas gourmande, de sorte que vous obtiendrez une correspondance plus rapide que celle donnée dans la question que vous avez référencée. (\b.*\b){0,10} est gourmand, alors que vous avez augmenté le nombre de mots, vous verrez une diminution des performances.

+0

Le donné regex ne permettra pas de symboles comme point d'interrogation si – pauloya

+0

@pauloya - fixe –

+0

Cela fonctionne bien dans la plupart des situations. J'ai essayé de tester toutes les choses possibles qui pourraient arriver ... J'ai un résultat étrange avec une chaîne qui dépasse la limite et qui a des caractères inhabituels. Par exemple: "one two {[]}!" £ $%^& *()?/':; # ~ @ Trois quatre cinq six sept-sept huit-huit neuf dix onze "et une limite de dix mots. la validation marche toujours mais il faut environ 30 secondes pour fonctionner (sur IE8 de toute façon), pendant laquelle tout le navigateur se fige ... Des chaînes beaucoup plus longues avec ou sans caractères étranges valident très vite ... Pourquoi une affaire comme celle-ci devrait prendre si longtemps? – codeulike

0

Vérifiez ce site:

http://lawrence.ecorp.net/inet/samples/regexp-validate.php#count

son regex javascript, mais est très similaire à asp.net

ses quelque chose comme ceci:

(\ b [a-z0- 9] + \ b. *) {4,}

+0

qui définirait une limite inférieure, pas une limite supérieure –

+0

Vous ne devriez pas attendre le code complet, c'est juste un exemple. –

Questions connexes