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

发布于 2024-11-02 22:39:37 字数 675 浏览 4 评论 0原文

我正在使用 C# 和 .NET,我有一个看起来像这样的正则表达式

"\D"

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

所以我尝试了 Chris',它做了一些调整以使其工作:(

我有一个名称为“Original”的 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; 是因为无论何时替换它把选择放在开头,这对用户来说似乎有点奇怪......

I'm using C# and .NET and I have a Regex that looks like this

"\D"

That matches all non-numeric characters however I don't want that to match a decimal point (.) and a negative sign (-). How can I do that with regular expressions?

So I tried Chris' and it made a few adjustments to make it work:

(I have a TextBox with a name of "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;
      }
  }

This Original.SelectionStart = Original.TextLength; is because whenever it was replaced it put the selection to the beginning and that would seem a little weird to a user...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

つ可否回来 2024-11-09 22:39:37

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

You can use a negated character class to exclude numbers, ., and -. The expression for matching a single character like this is [^\d\.\-]. The caret indicates that the class is negated.

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文