正则表达货币
我有asp:TextBox
保持金钱价值,即’1000’,’1000,0’和’1000,00’(逗号是俄罗斯标准的分隔符)。
ValidationExpression
有什么用于适当的asp:RegularExpressionValidator
?
我试过\d+\,\d{0,2}
但它不允许没有十进制数字的数字,例如只是’1000’。
\d+(,\d{1,2})?
只有当你有十进制数字时才会允许逗号,并且根本不允许使用逗号。 问号意味着与{0,1}
相同,所以在\d+
你有零实例(即什么都没有)或者一个实例
,\d{1,2}
正如Helen指出的那样,使用非捕获组就足够了,就像在
\d+(?:,\d{1,2})?
附加?:
表示括号仅用于对,\d{1,2}
部分进行分组以供问号使用,但不需要记住这些括号内匹配的内容。 因为这意味着正则表达式的工作量减少,所以可以提高性能。
我们使用这个非常宽松的正则表达式来validation货币:
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.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),($ 1),($ 1.00),($ 1,000.00)
我在javascript中使用了这个:在c#中可能对你有用
var entered = '10.00'; var regex = /^\d+(?:\.\d{2})?$/; // starts with N digits optional ".\d\d" console.log(entered.match(regex));