Question

Je veux utiliser un ASP.NET RegularExpressionValidator pour limiter le nombre de mots dans une zone de texte. (Le RegularExpressionValidator est ma solution privilégiée car elle fera les contrôles client et côté serveur).

Alors, quel serait le Regex correct de mettre dans le RegularExpressionValidator qui comptera les mots et appliquer un mot-limite? Car, disons, 150 mots.

(NB: Je vois que cette question similaires, mais les réponses semblent compter aussi sur le code comme Split (), donc je ne pense pas que l'un d'eux pourrait se brancher sur un RegularExpressionValidator qui est la raison pour laquelle je demande encore une fois)

Était-ce utile?

La solution

Depuis ^ et $ est implicitement ensemble avec RegularExpressionValidators , utilisez ce qui suit:

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

0 permet ici des chaînes vides (plus précisément 0 mots) et 150 est le nombre maximum de mots à accepter. Ajustez ces nécessaire pour augmenter / diminuer le nombre de mots reconnus.

Le regex ci-dessus est non-gourmand, et vous obtiendrez un plus rapide vers match de celle donnée dans la question que vous faites référence. (\b.*\b){0,10} est avide, afin que vous augmenter le nombre de mots que vous verrez une diminution des performances.

Autres conseils

Voici une référence rapide pour les expressions régulières: http://msdn.microsoft.com/en-us/library/az24scfc.aspx

Vous pouvez utiliser ce site pour tester les expressions: http://regexpal.com/

Voici mon exemple regex qui fonctionne aussi bien avec le nombre de mots minimum et maximum (et fixe bug avec un espacement de premier plan):

^\s*(\S+\s+|\S+$){10,150}$

Vérifier ce site:

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

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

est quelque chose comme ceci:

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top