用正则表达式验证一个数字
本文关键字:一个 数字 正则表达式 验证 | 更新日期: 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.Text
与e.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)
对我来说似乎更容易,更合乎逻辑:)