带有小数点&的数字的c#正则表达式;逗号
本文关键字:正则表达式 逗号 数字 小数点 amp | 更新日期: 2023-09-27 18:18:03
我需要在允许带有小数点和逗号的数字的文本框中输入金额。它的正则表达式是什么?
我用了下面的
txtInitialAmountGuarDetails.ValidationSettings.RegularExpression.ValidationExpression
= @"^[-+]?'d*[0-9](|.'d*[0-9])(|,'d*[0-9])?$";
但是对于像300,000,000,000,000这样的大数字就不起作用了
逐个构建。给定美国语言环境,具有这些规则的数字依次为:
- 字符串开头:
^
- 可选标志:
[+-]?
- 最多3位数字:
'd{1,3}
- 逗号后接3位数字,重复任意次数:
(?:,'d{3})*
- 可选的小数点和小数部分:
(?:[.]'d+)?
- 字符串结尾:
$
对小数点后的位数有限制吗?然后将最后一个加号更改为{2}
为2位。
所以,正则表达式是:
@"^[+-]?'d{1,3}(?:,'d{3})*(?:[.]'d+)?$"
或者,如果你想解释你的工作,使用x
选项和:
@"(?x) # Extended format.
^[+-]? # Optional sign.
'd{1,3} # Initial 1-3 digits.
(?:,'d{3})* # Any number of commas followed by 3 digits.
(?:[.]'d+)?$" # An optional decimal point followed by any number of digits.
但是c#已经有一个依赖于语言环境的验证器了吗? 我还没有运行它,但是你可以试一试。
var regexp =/^'s*?(['d',]+('.'d{1,2})?|'.'d{1,2})'s*$/;
这行得通:'d{1,3}(,'d{3})*'.{0,1}('d{3},)*'d{0,3}
至于逗号后面的问题,任何选择都应该是好的。如果你用逗号,我的正则表达式可以工作。如果你做5位数字,那么空格只是用('d{5}'s{1})*'d{0,5}
代替结束。当然,如果你在小数点后面不使用分隔符你只需输入'd*
你也可以试试这个正则表达式:
^([+-]?'d{1,3}(?:,'d{1,3})*(?:'.'d+)*)$
请记住,.
在regex引擎中具有特定的含义,因此有必要对其进行转义。
我还建议您不要使用正则表达式来完成此任务,而是查看遮罩文本框。
试试这个:
^([0-9]{3}[,.]|)+[0-9]{0,3}$