【发布时间】:2015-09-09 14:48:25
【问题描述】:
我有一个 wpf 文本框,我想在用户输入时检查他们是否只使用 0 1 2 3 4 5 6 7 8 9 。十进制数的[小数点]字符。我稍后使用此文本框转换为小数
我以以下文章为起点 Regex MatchPreview Text Input exampleregex-to-allow-one-decimal-number-or-a-range-of-decimal-number
这是我的 xaml
<TextBox Grid.Column="1" Height="28" HorizontalAlignment="Left" Margin="10,10,0,0" Name="tbTaxFreeLimit" Width="90" VerticalAlignment="Top"
AcceptsTab="True"
PreviewTextInput="tbDecimalCheck_PreviewTextInput"
/>
还有 c#
private void tbDecimalCheck_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
// Test for decimal
if (IsNumeric(e.Text)==false)
e.Handled = true;
}
private bool IsNumeric(string s)
{
Regex r = new Regex(@"^[0-9]");
return r.IsMatch(s);
}
这个例子适用于 0 1 2 3 4 5 6 7 8 9 但我不能输入小数点。
如果我将下面的代码更改为以下代码,则无效
Regex r = new Regex(@"^[0-9].");
【问题讨论】:
-
如何使用
decimal.Parse而不是具有适当文化设置的正则表达式?在这种情况下,正则表达式不是最好的方法。 -
而不是正则表达式尝试将输入值实际转换为
decimal。如果失败 - 显示红色边框。 -
@SonerGönül 更好
decimal.TryParse。