Regex pour correspondre à des caractères alphanumériques et des espaces

Que fais-je mal ici?

ssortingng q = "john s!"; ssortingng clean = Regex.Replace(q, @"([^a-zA-Z0-9]|^\s)", ssortingng.Empty); // clean == "johns". I want "john s"; 

juste un FYI

 ssortingng clean = Regex.Replace(q, @"[^a-zA-Z0-9\s]", ssortingng.Empty); 

serait en fait mieux comme

 ssortingng clean = Regex.Replace(q, @"[^\w\s]", ssortingng.Empty); 

Ce:

 ssortingng clean = Regex.Replace(dirty, "[^a-zA-Z0-9\x20]", Ssortingng.Empty); 

\ x20 est un hexagone ascii pour le caractère “espace”

vous pouvez append d’autres caractères individuels que vous souhaitez autoriser. Si vous voulez par exemple “?” pour être ok dans la chaîne de retour add \ x3f .

Je l’ai:

 ssortingng clean = Regex.Replace(q, @"[^a-zA-Z0-9\s]", ssortingng.Empty); 

Je ne savais pas que tu pouvais mettre les s

Je soupçonne que ^ ne fonctionne pas comme vous le pensez en dehors d’une classe de caractères.

Ce que vous lui dites de faire, c’est de remplacer tout ce qui n’est pas alphanumérique par une chaîne vide, OU un espace de début. Je pense que ce que vous voulez dire, c’est que les espaces sont corrects pour ne pas remplacer – 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.

  1. Vous utilisez le ^ en dehors d’un [] qui correspond au début de la ligne
  2. Vous n’utilisez pas un * ou +, ce qui signifie que vous ne correspondez qu’à un seul caractère.

Je pense que vous voulez le regex suivant @ “([^ a-zA-Z0-9 \ s]) +”

Le circonflexe entre crochets signifie tous les caractères sauf l’intervalle suivant. Vous voulez un circonflexe en dehors des crochets.

regex inférieure avec espace, prend en charge toutes les lettres du clavier de différentes cultures

  ssortingng input = "78-selim güzel667.,?"; Regex regex = new Regex(@"[^\w\x20]|[\d]"); var result= regex.Replace(input,""); //selim güzel