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";
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);
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.
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
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.
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.
Es scheint zwei Probleme zu geben.
Ich denke, Sie möchten den folgenden Regex @ "([^ a-zA-Z0-9\s]) +"
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
Die Umrandung in den eckigen Klammern bedeutet alle Zeichen außer dem nachfolgenden Bereich. Sie möchten eine Umrandung außerhalb von eckigen Klammern.