2009-07-08 4 views
1

Quel RegularExpressionValidator.ValidationExpression devrais-je utiliser pour n'autoriser que l'entrée ICQ UIN?RegEx pour ICQ UIN

xxx-xxx-xxx and xxx-xxx-xx and xx-xxx-xxx and xxxxxxxxx so on.. 

c'est-à-dire avec un tiret comme séparateur et sans.

Répondre

4

Vous pouvez utiliser l'expression simple suivante.

^([0-9]-?){7,8}[0-9]$ 

L'inconvénient est qu'il permet des choses comme 1-2-3-4-5-6-7-8. Si vous souhaitez restreindre davantage la mise en page, vous pouvez utiliser des expressions plus complexes.

^(?=([0-9]-?){8,9})([0-9]{2,3}-?)*(?<!-)$ 

Cette expression affirme que la chaîne contient exactement huit ou neuf chiffres et quelques touches en utilisant le regard positif avant affirmation (?=([0-9]-?){8}). Ensuite, il correspond à des groupes de deux ou trois chiffres facultativement séparés par des tirets et enfin affirme que la chaîne ne se termine pas avec un tiret en utilisant le regard négatif derrière l'assertion (?<!-).

Cela permet toujours certains modèles irréguliers comme 12-34567-89. Si vous voulez les éliminer aussi, vous devrez lister tous les modèles autorisés. Mais je suggère de ne pas le faire, mais permettez autant de flexibilité que possible - j'autoriserais chaque chaîne avec huit ou neuf chiffres et n'importe quel nombre de tirets - même --123---4-5-67--8 puis reformater l'entrée de l'utilisateur dans un format prédéfini.

^(-*[0-9]-*){8,9}$ 
+2

Quelques commentaires: (1) quand j'ai utilisé ICQ, j'avais un nombre à 6 chiffres; (2) Je pense que les numéros ICQ ne peuvent pas commencer par 0; (3) Juste ignorer les tirets est une bonne politique à mon humble avis: '^ - * [1-9] [0-9 -] * $' serait suffisant ... – Massa

+2

Massa, vous donnez votre âge Internet avec cette ... Mon ICQ a aussi un numéro à six chiffres, et j'ai adhéré il y a 11 ou 12 ans. –