使用正则表达式验证WPF文本框

本文关键字:文本 WPF 验证 正则表达式 | 更新日期: 2023-09-27 18:07:19

我有一个文本框,我使用事件TextChanged来检查字符串是否有效与RegEx,并显示一个消息框,如果它不是。当我用在线正则表达式工具(如http://regexpal.com/)测试正则表达式时,它似乎工作得很好。但是当我运行我的代码时,它并没有像预期的那样工作。我从来没有看到消息框出现。任何帮助都会很感激。我的正则表达式应该检查"。"之前从0到5的任何数字,如果有的话,使用两个小数。

private void txtValInput_TextChanged(object sender, TextChangedEventArgs e)
{
     string input = (sender as TextBox).Text; //1234567
     if(!Regex.IsMatch(input, @"^'d{1,5}|'d{0,5}'.'d{1,2}$"))
     {
           MessageBox.Show("Error!, check and try again");
     }
} 

使用正则表达式验证WPF文本框

您需要添加(),以便正则表达式正确锚定,否则您的示例匹配,因为正则表达式仅检查字符串开头是否有一到五个数字-任何东西都可以在之后。

@"^('d{1,5}|'d{0,5}'.'d{1,2})$"

不工作的原因是您没有在()中包含正则表达式。如果没有这个标识符,它就不能正确地锚定你的语法。

你希望你的表达式看起来像这样:

@"^('d{1,5}|'d{0,5}'.'d{1,2})$

请记住,您可能还为表达式添加了额外的复杂性。

精致的

:

  • ^:将抓取第一个字符或行。
  • 'd:将抓取所有数字字符。
  • $:将在行尾或最后一个字符停止。

我想在第二个问题上花点时间。如果您实际执行'd+,它将捕获所有数字字符和所有在其后的字符。这可能会使你的请求稍微容易一些;但我不确定你在找什么。

希望这有帮助,我看到一个灰色1回答框所以别人张贴,所以你应该很容易找到一个解决方案,卡尔文。