用正则表达式验证一个数字

本文关键字:一个 数字 正则表达式 验证 | 更新日期: 2023-09-27 18:02:01

我有一个WPF表单,用户可以在其中输入宽度和高度来缩放图像。我想用正则表达式验证这个数字。用户只能输入大于0的数字。

此刻我使用PreviewTextInput事件

<TextBox Name="Height" Width="50" PreviewTextInput="Height_ValidateNumber"></TextBox>

并使用

方法检查输入
    private void Height_ValidateNumber(object sender, TextCompositionEventArgs e)
    {
        Regex regex = new Regex("^[1-9][0-9]*$");
        e.Handled = regex.IsMatch(e.Text);
    }

我使用的正则表达式是^[1-9][0-9]'*$

这样做的问题是,我实际上可以输入除零以外的任何数字…

如果我使用[^1-9][0-9]'*$,我可以输入除零以外的所有数字…

我认为正则表达式^[1-9][0-9]'*$是没有错的。我认为这是另一个问题。

用正则表达式验证一个数字

您正在过滤所有有效值而不是无效值

改变这

e.Handled = regex.IsMatch(e.Text);

e.Handled = !regex.IsMatch(e.Text);

Update1: e.Text给出了新输入的文本,您可以将TextBox.Texte.Text连接起来以框架全文。

TextBox tb = (TextBox) sender;
Regex regex = new Regex("^[1-9][0-9]*$");
e.Handled = !regex.IsMatch(tb.Text + e.Text);

我知道你要求一个RegExpr,但是为什么你不使用:

long number;
if (UInt32.TryParse(e.Text, out number)) 
    // You can use ANY .net Number class here 
    //(you want > 0, use the UInt16,UInt32,UInt64 Structs)

对我来说似乎更容易,更合乎逻辑:)