wake-up-neo.com

Regex zur Übereinstimmung von alphanumerischen Zeichen und Leerzeichen

Was mache ich hier falsch?

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

nur eine FYI

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

wäre eigentlich besser so

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

Diese:

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

\x20 ist ASCII-Hex für Leerzeichen

sie können weitere individuelle Zeichen hinzufügen, die zulässig sein sollen. Wenn Sie beispielsweise "?" Um in der Rückgabe in Ordnung zu sein, fügen Sie\x3f hinzu.

17
Evolved

Ich habe es verstanden:

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

Wusste nicht, dass Sie in Klammern setzen könnten

12
John Sheehan

Ich vermute, ^ funktioniert nicht so, wie Sie glauben, außerhalb einer Charakterklasse.

Sie sagen, dass Sie alles, was kein alphanumerisches Zeichen ist, durch eine leere Zeichenfolge (OR) ersetzen. Ich denke, Sie meinen damit, dass Leerzeichen nicht ersetzt werden sollten. Versuchen Sie, die\s in die Klasse [] zu verschieben.

3
zigdon

Der folgende reguläre Ausdruck ist für die Platzierung in Textbox vorgesehen.

Regex r = new Regex("^[a-zA-Z\\s]+");
r.IsMatch(textbox1.text);

Das funktioniert gut für mich. 

2
vivek

Es scheint zwei Probleme zu geben.

  1. Sie verwenden das ^ außerhalb eines [], das dem Zeilenanfang entspricht
  2. Sie verwenden kein * oder +, was bedeutet, dass Sie nur einen einzelnen Buchstaben finden.

Ich denke, Sie möchten den folgenden Regex @ "([^ a-zA-Z0-9\s]) +"

1
JaredPar

bottom regex mit Leerzeichen, unterstützt alle Tastaturbuchstaben aus verschiedenen Kulturen

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

Die Umrandung in den eckigen Klammern bedeutet alle Zeichen außer dem nachfolgenden Bereich. Sie möchten eine Umrandung außerhalb von eckigen Klammern.

0