Backslashes müssen in regulären Ausdrücken maskiert werden - und sie auch müssen in C# maskiert werden, es sei denn, Sie verwenden verbatim string literals. Also entweder davon funktionieren sollte:
var regexItem = new Regex(@"^[a-zA-Z0-9\\ ]*$");
var regexItem = new Regex("^[a-zA-Z0-9\\\\ ]*$");
davon Beide sorgen dafür, dass die folgende Zeichenfolge Inhalt an den Regex
Konstruktor übergeben wird:
^[a-zA-Z0-9\\ ]*$
Der Regex
Code wird dann den doppelten Backslash sehen und behandeln es als "Ich möchte den Backslash-Charakter wirklich anpassen."
Grundsätzlich müssen Sie immer zwischen "den String-Inhalten, die Sie an die Regex-Engine übergeben wollen" und "der String-Literaldarstellung im Quelltext" unterscheiden. (Dies gilt nicht nur für reguläre Ausdrücke, natürlich. Der Debugger hilft nicht durch Flucht in Watch Windows etc.)
EDIT: Nun, dass die Frage bearbeitet wurde zu zeigen, dass Sie ursprünglich drei Backslashes hatten , das ist einfach nicht gültig C#. Ich vermuten Sie zielten „eine Zeichenkette mit drei Schrägstriche in“, die entweder von diesen sein würde:
var regexItem = new Regex(@"^[a-zA-Z0-9\\\ ]*$");
var regexItem = new Regex("^[a-zA-Z0-9\\\\\\ ]*$");
... aber Sie brauchen nicht so weit, den Raum zu entkommen, wie der reguläre Ausdruck ist besorgt.
"scheint nicht zu funktionieren" bedeutet? Was macht es, was du nicht erwartest? –