2009-02-12 13 views
0

Je travaille avec ASP.NET 3.5, VB.NET, et j'essaie de valider certaines entrées via une expression régulière.Validation d'une expression de validation

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 "-". Ça ne marche tout simplement pas. J'ai essayé Internet Explorer et Firefox, même problème. Comment peut-il être réparé?

+0

Y a-t-il un peu d'étrangeté dans VB.NET que je ne connais pas et qui vous oblige à citer tous les caractères? –

+4

Plz n'utilisez pas "Plz". Il suffit de dire "s'il vous plaît". –

+0

S'il vous plaît ne pas utiliser "Plz" lorsque vous demandez à quelqu'un de ne pas utiliser "Plz" @RobRingham :) –

Répondre

3

Pourquoi tous les guillemets simples? Ils sont inutiles.

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

Déplacez le "-" au début ou à la fin de la classe de caractères pour qu'elle soit reconnue. En outre, la barre oblique inverse doit être échappée correctement ou vous ne pourrez pas non plus faire correspondre les barres obliques inverses.

Voir les marques "^" ci-dessus.

+0

Merci .. a travaillé très bien :) – Maen

3

Le caractère - a une signification particulière dans ce contexte. Échappez-le avec une barre oblique inverse ou notez-le comme le dernier caractère du bloc.

1

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

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

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

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

1

Vous devez échapper à la - caractère en plaçant \ devant lui. Le regex deviendrait alors

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