it-swarm.dev

Regex, aby dopasować alfanumerycznie i spacje

Co ja tu robię źle?

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

tylko FYI

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

byłoby lepiej

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

To:

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

x20 ascii hex dla znaku „space”

możesz dodać więcej pojedynczych znaków, które chcesz mieć dozwolone . Jeśli chcesz na przykład "?" być ok w zwracanym ciągu add x3f .

17
Evolved

Mam to:

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

Nie wiedziałem, że możesz umieścić w nawiasach

12
John Sheehan

Podejrzewam, że ^ nie działa tak, jak myślisz, że robi to poza klasą postaci.

To, co mówisz, to zastąpić wszystko, co nie jest alfanumeryczne pustym łańcuchem, OR żadną wiodącą przestrzenią. Myślę, że chcesz powiedzieć, że spacje są w porządku, aby nie zastępować - spróbuj przenieść te klasy do klasy [].

3
zigdon

Poniższe wyrażenie regularne służy do wstawiania spacji w polu tekstowym.

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

To działa dobrze dla mnie. 

2
vivek

Wydaje się, że są dwa problemy.

  1. Używasz ^ na zewnątrz [], który pasuje do początku linii
  2. Nie używasz * lub +, co oznacza, że ​​dopasujesz tylko jeden znak.

Myślę, że chcesz następujący regex @ "([^ a-zA-Z0-9 s]) +"

1
JaredPar

bottom regex z przestrzenią, obsługuje wszystkie litery klawiatury z innej kultury

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

Okólnik w nawiasach kwadratowych oznacza wszystkie znaki z wyjątkiem kolejnego zakresu. Chcesz okalać poza nawiasami kwadratowymi.

0