c# - WPF 中的正则表达式
问题描述
我知道已经有一些帖子试图解释 RegEx 字符串。但我还是不明白。就我而言,我需要一个 WPF 的正则表达式,它只允许“数字键盘”。它在代码中:
private void NumberValidationTextBox(object sender, TextCompositionEventArgs e)
{
Regex regex = new Regex("[-+]?[0-9]*,?[0-9]*");
e.Handled = regex.IsMatch(e.Text);
}
所以这里有一些示例数字,我需要允许:“1”或“-1”或“-0,5”或“4,00”或“-3,56”或“3,3”或
" '-2, ' 为 '-2,0' 或 '-2' "
(所以它都在 -4 到 +4 之间。可以有一个逗号,但不是必须的。如果有逗号,它后面需要一个或 2 个数字 - 不多。它也应该是一个“,”不是“。” - 这很重要)有人知道如何编写这个正则表达式字符串吗?谢谢
解决方案
分解它,你所追求的并不那么复杂。
首先,您的最大/最小范围是从 -4 到 4。考虑到小数部分,您可以拥有以下内容:^[+-]?4(,0{1,2})?$
. 所以在这里,我们期望 a+
或 a -
(可选),数字 4,可选地后跟一个逗号和一个或两个 0。
在您的情况下,我们现在需要匹配您范围的中间值,即从 -3.99 到 3.99。这可以通过以下方式实现:^[+-]?[0-3](,\d{1,2})?$
. 在这种情况下,我们还期望 a+
或 a -
(可选)。然后我们期望匹配一个介于 0 和 3 之间的数字,可选地后跟逗号和 1 或 2 位数字。
将它们结合起来,我们最终会得到这样的结果:^[+-]?((4(,0{1,2})?)|([0-3](,\d{1,2})?))$
. 此处提供示例。
编辑:根据评论,您需要转义. 最简单的方法是使用字符,以便 C# 编译器将字符串威胁为文字:.\d
\d
\n
\t
@
Regex regex = new Regex(@"^[+-]?((4(,0{1,2})?)|([0-3](,\d{1,2})?))$");
推荐阅读
- jquery - 使用 jQuery AJAX 调用新值并将新值附加到新行
- node.js - AWS Lambda 使用 nodejs 脚本创建 rds 备份 -AWS RDS 和 SQL Server
- python - 强制导入模块的特定加载顺序
- node.js - Watson Assistant 对话框 - 子节点未出现在 WhatsApp 集成机器人中
- c - sprintf - 堆栈关系 - bufferoverflow
- excel - 如何在 Excel 的 n+ 行中查找日期和时间格式是否错误
- python - 从 Django 中的父模型访问子模型对象的问题
- ads - Branch.io 与 Adwords 的集成
- google-cloud-platform - 谷歌云负载平衡器 URL 重写不起作用
- point-clouds - 在 Meshlab 中通过光标分离选定网格的副本