Regex для числовых символов и. & - - PullRequest
2 голосов
/ 22 апреля 2011

Я использую C # и .NET, и у меня есть регулярное выражение, которое выглядит так

"\D"

Это соответствует всем нечисловым символам, однако я не хочу, чтобы это совпадало с десятичной точкой (.) И отрицательным знаком (-). Как я могу сделать это с регулярными выражениями?

Итак, я попробовал Криса, и он сделал несколько изменений, чтобы заставить его работать:

(у меня есть TextBox с именем «Оригинал»)

 private void Original_TextChanged(object sender, EventArgs e) {
      Regex regex = new Regex(@"[^\d.-]", RegexOptions.IgnoreCase);
      Match match = regex.Match(Original.Text);
      if (match.Success) {
          Original.Text = regex.Replace(Original.Text, "");
          Original.SelectionStart = Original.TextLength;
      }
  }

Это Original.SelectionStart = Original.TextLength;, потому что всякий раз, когда его заменяли, он помещал выделение в начало, и это казалось бы немного странным для пользователя ...

1 Ответ

5 голосов
/ 22 апреля 2011

Вы можете использовать класс отрицательных символов для исключения чисел, . и -.Выражение для сопоставления с одним символом, как это [^\d\.\-].Символ каретки указывает, что класс отменен.

Regex.IsMatch("a f", @"^[^\d\.\-]+$"); // true
Regex.IsMatch("a_f", @"^[^\d\.\-]+$"); // true
Regex.IsMatch("a.f", @"^[^\d\.\-]+$"); // false
Regex.IsMatch("af-", @"^[^\d\.\-]+$"); // false
Regex.IsMatch("-42", @"^[^\d\.\-]+$"); // false
Regex.IsMatch("4.2", @"^[^\d\.\-]+$"); // false
...