16

我必须asp:TextBox保持金钱的价值,即“1000”、“1000,0”和“1000,00”(因为俄罗斯标准,逗号是分隔符)。

ValidationExpression有什么合适的asp:RegularExpressionValidator

我试过\d+\,\d{0,2}了,但它不允许没有十进制数字的数字,例如只有“1000”。

4

4 回答 4

31
\d+(,\d{1,2})?

仅当您有十进制数字时才允许逗号,并且根本不允许逗号。问号的含义与 相同{0,1},因此在之后\d+您有零个实例(即没有)或一个实例

,\d{1,2}

正如海伦正确指出的那样,使用非捕获组就足够了,如

\d+(?:,\d{1,2})?

附加?:意味着括号仅用于将,\d{1,2}部分分组以供问号使用,但无需记住这些括号内匹配的内容。由于这意味着正则表达式引擎的工作量减少,因此您会获得性能提升。

于 2009-06-22T16:39:01.820 回答
7

我们使用这个非常自由的正则表达式进行货币验证:

new Regex(@"^\-?\(?\$?\s*\-?\s*\(?(((\d{1,3}((\,\d{3})*|\d*))?(\.\d{1,4})?)|((\d{1,3}((\,\d{3})*|\d*))(\.\d{0,4})?))\)?$");

它允许所有这些:$0, 0, (0.0000), .1, .01, .0001, $.1, $.01, $.0001, ($.1), ($.01), $(.0001 ), 0.1, 0.01, 0.0001, 1., 1111., 1,111., 1, 1.00, 1,000.00, $1, $1.00, $1,000.00, $1.0000, $1.0000, $1,000.0000, -1, -1.00, -1,000, -1,000. -$1.00, -$1,000.00, -$ 1, -$ 1.00, -$ 1,000.00, $-1, $-1.00, $-1,000.00, $(1), $(1.00), $(1,000.00), $ (1), $ (1.00), $ (1,000.00), ($1), ($1.00), ($1,000.00)

于 2009-07-08T21:48:16.853 回答
3

http://regexlib.com/Search.aspx?k=money

于 2009-06-22T16:40:12.473 回答
3

我在javascript中使用了这个:可能在 c# 中对你有用

var entered = '10.00';
var regex = /^\d+(?:\.\d{2})?$/; // starts with N digits optional ".\d\d"
console.log(entered.match(regex));
于 2013-11-20T00:37:21.283 回答