我有以下正则表达式来匹配小数:
@"[\d]{1,4}([.][\d]{1,2})?"
但我可以输入多个小数点。我怎样才能防止这种情况发生?一般来说,我可以输入像“2000”或“2000.22”这样的字符串。我尝试使用 decimal.TryParse 但我可以输入两个小数点(例如 2000..)
这是我的带有验证方法的类:
public static class ValidationUtils
{
public static bool IsValid(string text)
{
var regex = new Regex(@"^\d{1,9}([.]\d{1,2})?$");
var success = regex.IsMatch(text);
return success;
}
}
这是页面代码开始的调用:
private void OnPreviewTextInput(object sender, TextCompositionEventArgs eventArgs)
{
var box = eventArgs.OriginalSource as TextBox;
if (box == null) return;
eventArgs.Handled = !ValidationUtils.IsValid(box.Text + eventArgs.Text);
}
和TextBox的xaml:
<TextBox Text="{Binding Nominal, Mode=TwoWay,
StringFormat={}{0:0.######}, UpdateSourceTrigger=PropertyChanged,
NotifyOnValidationError=True, ValidatesOnDataErrors=True,
Converter={StaticResource decimalValueConverter}}"
PreviewTextInput="OnPreviewTextInput"/>
我在这里使用了错误的事件吗?
谢谢。
最佳答案
关于c# - 正则表达式匹配十进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16814262/