Qu'est-ce que je fais mal ici?
string q = "john s!";
string clean = Regex.Replace(q, @"([^a-zA-Z0-9]|^\s)", string.Empty);
// clean == "johns". I want "john s";
juste un FYI
string clean = Regex.Replace(q, @"[^a-zA-Z0-9\s]", string.Empty);
serait en fait mieux comme
string clean = Regex.Replace(q, @"[^\w\s]", string.Empty);
Ce:
string clean = Regex.Replace(dirty, "[^a-zA-Z0-9\x20]", String.Empty);
\x20 est un hexadécimal ascii pour le caractère "espace"
vous pouvez ajouter plus de caractères individuels que vous souhaitez autoriser . Si vous voulez par exemple "?" pour être ok dans la chaîne de retour, ajoutez\x3f .
J? ai compris:
string clean = Regex.Replace(q, @"[^a-zA-Z0-9\s]", string.Empty);
Je ne savais pas que vous pouviez mettre entre crochets
Je soupçonne que ^ ne fonctionne pas comme vous le pensez en dehors d'une classe de personnage.
Ce que vous lui dites de faire, c'est de remplacer tout ce qui n'est pas alphanumérique par une chaîne vide, OR sans espace. Je pense que ce que vous voulez dire, c’est que les espaces ne peuvent pas être remplacés. Essayez de déplacer les\s dans la classe [].
La regex suivante est pour l'inclusion d'espace dans la zone de texte.
Regex r = new Regex("^[a-zA-Z\\s]+");
r.IsMatch(textbox1.text);
Cela fonctionne bien pour moi.
Il semble y avoir deux problèmes.
Je pense que vous voulez la regex suivante @ "([^ a-zA-Z0-9\s]) +"
regex bottom avec espace, supporte toutes les lettres du clavier de différentes cultures
string input = "78-selim güzel667.,?";
Regex regex = new Regex(@"[^\w\x20]|[\d]");
var result= regex.Replace(input,"");
//selim güzel
La circonflexe à l'intérieur des crochets signifie tous les caractères sauf la plage suivante. Vous voulez un circumflexe en dehors des crochets.