2010-10-11 6 views
3

Je suis nouveau à regex (15 minutes d'expérience), donc je ne peux pas comprendre celui-ci. Je veux juste quelque chose qui correspond à une chaîne alphanumérique sans espace. Par exemple:Simple Regex Question

"ThisIsMyName" doit correspondre, mais "This Is My Name" ne doit pas correspondre.

+0

Je recommande fortement d'utiliser l'extension testeur Regex VS10, si vous utilisez que IDE. – Squirrelsama

Répondre

4

^[a-zA-Z0-9]+$ correspondront des lettres et des chiffres sans espaces (ou toute ponctuation) dans la chaîne. Il faudra également au moins un caractère alphanumérique. Cela utilise un character class pour la correspondance. Répartition:

^  #Match the beginning of the string 
[  #Start of a character class 
    a-z #The range of lowercase letters 
    A-Z #The range of uppercase letters 
    0-9 #The digits 0-9 
]  #End of the character class 
+  #Repeat the previous one or more times 
$  #End of string 

De plus, si vous voulez « capturer » le match afin qu'il puisse être référencé plus tard, vous pouvez entourer l'expression rationnelle dans parens (un capture group), comme ceci:

^([a-zA-Z0-9]+)$ 

Encore plus loin: depuis que vous avez marqué ceci avec C#, MSDN a un peu comment utiliser des expressions régulières dans .NET. Il peut être trouvé here. Vous pouvez également noter le fait que si vous exécutez le regex avec le drapeau RegexOptions.IgnoreCase alors vous pouvez simplifier à:

^([a-z0-9])+$

+0

Aha, cela fonctionne parfaitement. Il me manquait le '$' avant. Merci beaucoup. –

0

Essayez d'utiliser cette regex pour voir si cela fonctionne: (\w+)

+0

Sachez également que cela correspond au caractère de soulignement. – eldarerathis

0

cela correspond une séquence de caractères non-espace:

\S+