用于数字字符和.&-的正则表达式

本文关键字:正则表达式 数字字符 用于 | 更新日期: 2023-09-27 17:51:20

我使用c#和。net,我有一个Regex,看起来像这样

"'D"

匹配所有非数字字符,但是我不希望它匹配小数点(.)和负号(-)。我怎么用正则表达式做到这一点呢?

所以我尝试了克里斯的,它做了一些调整,使它工作:

(我有一个名称为"Original"的文本框)

 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;是因为当它被替换时,它把选择放到了开始,这对用户来说似乎有点奇怪。

用于数字字符和.&-的正则表达式

您可以使用否定的字符类来排除数字、.-。像这样匹配单个字符的表达式是[^'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