谁能帮我做一个正则表达式?
- 只有数字(正数和负数)
- 仅最多一个点(可选)
- 最大精度0.00(可选)
- 逗号(,)应替换为点(.)
代码如下:
<TextBox PreviewTextInput="NumberValidationTextBox"/>
private void NumberValidationTextBox(object sender, TextCompositionEventArgs e)
{
Regex regex = new Regex("[^0-9.]+");
e.Handled = regex.IsMatch(e.Text);
}
谢谢。
2条答案
按热度按时间lokaqttq1#
这会检测有效的输入,但不会将','转换为'.'。只需执行字符串替换即可。您可以安全地假设此时测试中的任何','都应该是'.'。
vhipe2zx2#
问题在于你的方法:
e.文本给出键入的字符,而不是TextBox的内容
所以这个解决方案给出了等待的结果:
要将
,
替换为.
,我建议您添加TextChanged事件:i使用属性
CaretIndex
将光标保持在最后一个位置(替换将光标的位置重置在第一个位置)我已经将
.trim()
添加到myInput.Text = myInput.Text.Replace(",", ".").Trim();
中,因为previewtextInput事件不会与space
一起播放(正常)