Регулярное выражение для соответствия буквенно-цифровым и пробелам - PullRequest
46 голосов
/ 08 октября 2008

Что я здесь не так делаю?

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

Ответы [ 8 ]

66 голосов
/ 22 июля 2011

просто к вашему сведению

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

на самом деле было бы лучше, чем

string clean = Regex.Replace(q, @"[^\w\s]", string.Empty);
17 голосов
/ 08 июля 2011

Это:

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

\ x20 - это шестнадцатеричный шестнадцатеричный символ "пробел"

Вы можете добавить больше отдельных символов, которые вы хотите разрешить. Если вы хотите, чтобы, например, "?" было нормально в возвращаемой строке, добавьте \ x3f .

12 голосов
/ 08 октября 2008

Я понял:

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

Не знал, что вы можете поставить \ s в скобках

3 голосов
/ 08 октября 2008

Я подозреваю, что ^ не работает так, как вы думаете, работает вне класса персонажей.

Что вы говорите, это замените все, что не является буквенно-цифровым, пустой строкой ИЛИ любым начальным пробелом. Я думаю, что вы хотите сказать, что пробелы можно заменить, попробуйте переместить \ s в класс [].

2 голосов
/ 24 октября 2012

Следующее регулярное выражение для включения пробела в текстовое поле.

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

Это прекрасно работает для меня.

1 голос
/ 08 октября 2008

Кажется, есть две проблемы.

  1. Вы используете ^ вне [], которое соответствует началу строки
  2. Вы не используете * или +, что означает, что вы будете соответствовать только одному символу.

Я думаю, вам нужно следующее регулярное выражение @ "([^ a-zA-Z0-9 \ s]) +"

0 голосов
/ 23 июня 2018

нижнее регулярное выражение с пробелом, поддерживает все буквы клавиатуры из другой культуры

 string input = "78-selim güzel667.,?";
 Regex regex = new Regex(@"[^\w\x20]|[\d]");
 var result= regex.Replace(input,"");
 //selim güzel
0 голосов
/ 08 октября 2008

Обводное кольцо в квадратных скобках означает все символы, кроме последующего диапазона. Вы хотите окружность вне квадратных скобок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...