带有小数点&的数字的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这样的大数字就不起作用了

带有小数点&的数字的c#正则表达式;逗号

逐个构建。给定美国语言环境,具有这些规则的数字依次为:

  • 字符串开头:^
  • 可选标志:[+-]?
  • 最多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}$