ukośniki muszą być uciekł w wyrażeniach regularnych - i również trzeba uciec w C#, chyba że używasz verbatim string literals. Więc albo z nich powinno działać:
var regexItem = new Regex(@"^[a-zA-Z0-9\\ ]*$");
var regexItem = new Regex("^[a-zA-Z0-9\\\\ ]*$");
Oba zapewnić następującą treść łańcuch jest przekazywany do konstruktora Regex
:
^[a-zA-Z0-9\\ ]*$
Kod Regex
wtedy oglądnąć podwójnej backslash i traktować go jako "Naprawdę chcę dopasować postać z ukośnika odwrotnego."
Zasadniczo zawsze trzeba rozróżnić "zawartość napisów, które chcesz przekazać do silnika regex" i "reprezentację literową ciągu znaków w kodzie źródłowym". (Jest to prawdą nie tylko dla wyrażeń regularnych, oczywiście Debuger nie pomaga w ucieczce przez okna Watch itp.)
EDIT: Teraz pytanie zostało edytowane aby pokazać, że pierwotnie miał trzy backslashy , to po prostu nie jest prawidłowe C#. Podejrzewam ty mające na „sznurku z trzech ukośniki w” co byłoby jedną z nich:
var regexItem = new Regex(@"^[a-zA-Z0-9\\\ ]*$");
var regexItem = new Regex("^[a-zA-Z0-9\\\\\\ ]*$");
... ale nie trzeba się uciec z miejsca o ile jest wyrażenie regularne zaniepokojony.
"nie wydaje się działać" oznacza? Co robi, czego się nie spodziewasz? –