Question

Je travaille avec ASP.NET 3.5, VB.NET, et je suis en train de valider certaines entrées par une expression régulière.

Mon expression est:

^[a-zA-Z'_''-''/'' ''\''@''&''.'',''ç''Ç''ö''Ö''I''ı''i''İ''ğ''Ğ''ş''Ş''ü''Ü'\s\d]{1,50}$

Et cela fonctionne pour tous les caractères spéciaux I inclus sauf le " - ". Il ne fonctionne tout simplement pas. J'ai essayé Internet Explorer et Firefox, même problème. Comment peut-il être fixé?

Était-ce utile?

La solution

Pourquoi tous les guillemets simples? Ils ne sont pas nécessaires.

^[-a-zA-Z_/\\@&.,çÇöÖIiiIgGsSüÜ\s\d]{1,50}$
  ^        ^^

Déplacer le « - » au début ou à la fin de la classe de caractères de l'avoir reconnu. En outre, la barre oblique inverse doit être échappé correctement ou vous ne serez pas en mesure de faire correspondre antislashs non plus.

Voir les marques "^" ci-dessus.

Autres conseils

Le caractère - a une signification particulière dans ce contexte. Évadez avec une barre oblique inverse ou la liste comme le dernier caractère dans le bloc.

Dans un groupe caractère d'expression régulière [...], un signe moins une plage signifie en spécifiant une plage de caractères juridiques. Utile si vous avez beaucoup de symboles séquentiels (toutes les lettres, les chiffres, etc.) et ne veulent pas les énumérer.

Exemple: [0-9] Cela correspondra à tous les chiffres 0, 1, 2, 3, 4, 5, 6, 7, 8 ou 9, mais pas le signe moins.

Pour correspondre à un signe moins directement, le préfixe avec une barre oblique inverse:

Exemple: [0\-9] Cela correspondra au chiffre 0, le signe moins, ou le chiffre 9.

Vous devez échapper le caractère - en plaçant \ devant elle. Le regex deviendrait alors

^[a-zA-Z'_''\-''/'' ''\''@''&''.'',''ç''Ç''ö''Ö''I''ı''i''İ''ğ''Ğ''ş''Ş''ü''Ü'\s\d]{1,50}$  
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top