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