2010-06-21 12 views
2

Je dois regex myString chaîne seulement ont '# $% &!:Expression régulière: 0-9 AZ az ou l'un de ces * + -/=^_ `{|} ~

    ?
  • 0-9
  • AZ ou az
  • un de ces caractères * + -/=^_ ` '# $% &!' {|} ~?.

Ceci est ma ligne de code:

new Regex("[a-zA-Z0-9]").IsMatch(myString); 

Jusqu'à présent, j'ai [a-zA-Z0-9] et cela fonctionne très bien pour les deux premières listitems. Actuellement je m'arrache les cheveux (et c'est tellement bien que je veux le garder) sur les métacaractères et je n'arrive à rien.

Toute aide serait grandement appréciée. Merci. Dave

+0

Qu'est-ce que c'est le problème? Avez-vous leur échapper? – leppie

+0

J'ai essayé de leur échapper avec \ et d'obtenir une séquence non reconnue au moment de l'exécution. – Dave

Répondre

4

Salut là Si vous voulez que les caractères figurant dans votre chaîne, il est très simple.but vous devez correspondre à partir d'une fin de ligne

new Regex("^[a-zA-Z0-9'!#$%&'*+/=?^_`{|}~.-]*$").IsMatch(myString); 
3
"[a-zA-Z0-9'!#$%&'*+/=?^_`{|}~.-]" 

vérifier que (« - ») signe moins être le dernier caractère dans une séquence []

2

caractères Meta sont très bien entre parenthèses, aussi longtemps que vous échapper à ceux importants. De plus, le tiret DOIT être le dernier de votre séquence.

new Regex("[a-zA-Z0-9'!#$%&'*+/=?^_`{|}~-]").IsMatch(myString); 
+0

Non. Le . alllows n'importe quel caractère de sorte que cela ne fonctionne pas non plus. – Dave

1

Essayez:

var re = "[a-zA-Z0-9" + Regex.Escape("'!#$%&'*+-/=?^_`{|}~.") + "]"; 
+0

'Regex.Escape' n'est pas sûr dans une classe de caractères - il n'échappe pas' -': http://msdn.microsoft.com/fr-fr/library/system.text.regularexpressions.regex.escape. aspx. Il permettra également d'échapper les personnages qui n'en ont pas besoin, mais c'est OK. – Kobi

Questions connexes