我需要在允许带小数点和逗号的数字的文本框中输入金额。这个的正则表达式是什么?
我用了下面
txtInitialAmountGuarDetails.ValidationSettings.RegularExpression.ValidationExpression
= @"^[-+]?\d*[0-9](|.\d*[0-9])(|,\d*[0-9])?$";
但它不适用于像 300,000,000,000,000 这样的大数字。
一点一点地建立起来。给定美国语言环境,具有这些规则的数字按顺序排列:
^
[+-]?
\d{1,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# 是否已经有一个依赖于语言环境的验证器?
你也可以试试这个正则表达式:
^([+-]?\d{1,3}(?:,\d{1,3})*(?:\.\d+)*)$
请记住,.
在正则表达式引擎中具有特定含义,因此有必要对其进行转义。
我还建议您不要将正则表达式用于此任务,而是查看masked textbox。
这有效:\d{1,3}(,\d{3})*\.{0,1}(\d{3},)*\d{0,3}
至于逗号之后的问题,任何选择都应该没问题。如果你用逗号,我的正则表达式有效。如果您执行 5 位数字,则只需将空格替换为(\d{5}\s{1})*\d{0,5}
. 当然,如果你只是在小数点后不使用任何分隔符,你就放\d*
我没有运行它,但你可以尝试一下。
var regexp =/^\s*?([\d\,]+(\.\d{1,2})?|\.\d{1,2})\s*$/;
试试这个:
^([0-9]{3}[,.]|)+[0-9]{0,3}$
让我知道它是否需要任何增强...