2009-05-20 11 views
17

J'essaie de créer un motif d'expression régulière en C#. Le modèle ne peut permettre:C# Expression régulière pour faire correspondre les lettres, les chiffres et les traits de soulignement

  • lettres
  • numéros
  • souligne

Jusqu'à présent, j'ai peu de chance (je ne suis pas bon à RegEx). Voici ce que j'ai essayé jusqu'ici:

// Create the regular expression 
string pattern = @"\w+_"; 
Regex regex = new Regex(pattern); 

// Compare a string against the regular expression 
return regex.IsMatch(stringToTest); 

Répondre

27

EDIT:

@"^[a-zA-Z0-9\_]+$" 

ou

@"^\w+$" 
+1

@JoeWhite le deuxième match aussi les lettres majuscules anglais http://regexstorm.net/tester?p=%5e%5cw%2b%24&i=ABC&o=m – ihebiheb

2

Essayez d'expérimenter quelque chose comme http://www.weitz.de/regex-coach/ qui vous permet de développer de manière interactive regex.

Il est conçu pour Perl, mais m'a aidé à comprendre comment fonctionne une regex en pratique.

18

@ "^ \ w + $"

\ w correspond à tout "caractère de mot", défini comme des chiffres, des lettres et caractères de soulignement. Il est compatible Unicode donc il va correspondre à des lettres avec trémas et autres (mieux que d'essayer de rouler votre propre classe de caractères comme [A-Za-z0-9_] qui ne correspondrait que des lettres anglaises). Le^au début signifie "correspondre au début de la chaîne ici", et le $ à la fin signifie "correspondre à la fin de la chaîne ici". Sans ceux-ci, par ex. si vous venez d'avoir @ "\ w +", alors "@@ Foo @@" correspondra, car contient un ou plusieurs caractères. Avec les touches^et $, alors "@@ Foo @@" ne correspondrait pas (ce qui ressemble à ce que vous cherchez), parce que vous n'avez pas de début de chaîne suivi d'un ou plusieurs mots caractères suivis d'une fin de chaîne.

Questions connexes