【发布时间】:2018-07-24 22:59:25
【问题描述】:
我正在读取 C# 中的 TextBox,我想确保只允许真正的正值(包括整数)。 即 1、23、23.、23.0、23.42 等。 我使用的正则表达式是:
[0-9]+\\.?[0-9]*
但是 C# 只允许我输入数字,而且我永远不能输入句点。
谢谢
代码:
private static readonly Regex rgx_onlyPositiveReals = new Regex("[0-9]+\\.?[0-9]*");
private void TextBox_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
e.Handled = !IsSamplingRateAllowed(e.Text);
}
private static bool IsSamplingRateAllowed(string text)
{
if(rgx_onlyPositiveReals.IsMatch(text))
{
if(text.Equals(".") || float.Parse(text) <= 0.0)
{
MessageBox.Show("Sampling Rate has to be positive.", "Wrong Sampling Frequency Error", MessageBoxButton.OK, MessageBoxImage.Error);
return false;
}
return true;
}
return false;
}
【问题讨论】:
-
请以我们可以运行的形式向我们展示实际的源代码。您可能有一些轻微的拼写错误或格式错误。
-
从
.*的正则表达式开始,看看是否可行。我怀疑有些东西没有正确连接。你的正则表达式太宽松了,如果有的话,应该允许你的数字,除非我错过了什么。 -
这给出了相同的结果@zzxyz
-
@TheBosco - 可能你已经在你的剃须刀、js 或其他东西上做了什么,这就是禁止
.。或者,为输入事件调用了错误的 C# 函数。 -
顺便说一句,我认为您可能打算标记 WPF 而不是 ASP.NET。在这种情况下,我建议粘贴声明文本框的 XAML。