ASP MVC 5 C#.NET正则表达式对价格无效的注释
我使用下面的正则表达式来计算价格,但它没有强制执行有效的价格ASP MVC 5 C#.NET正则表达式对价格无效的注释,c#,asp.net,regex,asp.net-mvc,C#,Asp.net,Regex,Asp.net Mvc,我使用下面的正则表达式来计算价格,但它没有强制执行有效的价格 [RegularExpression(@"^\d+(\.\d{2})?$", ErrorMessage = "Invalid price.")] 它阻止了大多数非价格输入,但允许以下形式的价格: 三, 二十一, 等等 为什么它允许十进制,但不需要两位数?如果存在小数点,我的正则表达式会是什么样子来强制数字?它可能允许数字没有小数点,因为表达式中的量词? 量词(…)捕获包含在括号中的所有内容 量词?表示“零或前面的一个” ()?捕获p
[RegularExpression(@"^\d+(\.\d{2})?$", ErrorMessage = "Invalid price.")]
它阻止了大多数非价格输入,但允许以下形式的价格:
三,
二十一,
等等
为什么它允许十进制,但不需要两位数?如果存在小数点,我的正则表达式会是什么样子来强制数字?它可能允许数字没有小数点,因为表达式中的量词
?
量词(…)
捕获包含在括号中的所有内容
量词?
表示“零或前面的一个”
()?
捕获parens中包含的任何内容中的零个或一个
所以“.”和两个数字可以显示为零或一次
这个表达式应该可以解决这个问题。
因为它不是封闭的并且没有量词?
^\d+(.\d{2})或^\d+。\d{2}$
您可以使用此网站帮助您构建正则表达式。
这可能有助于您的正则表达式绝对有效,也许您的验证过程中还发生了其他事情。也就是说:
newregex(@“^\d+(\.\d{2})?$”).IsMatch(“21”)
返回false。要回显@Rob,Regex本身工作正常。。。我不确定我是否理解你的答案。我知道为什么它允许数字不带小数-我在设置正则表达式时就考虑到了这一点。我的问题是,为什么它允许有小数点的数字,但没有小数点后的2位数字?我不是在问为什么它允许没有小数点的数字。我在问为什么它允许有小数点的数字,即使小数点后没有数字。即:应允许以下情况:“23”、“2”、“2.34”、“213.90”。为什么它允许“3.”和“67.”?\。\d{}在应用于它时不被视为一个表达式。它们都是两种不同的表达方式。因此,这两个单独的表达式是可选的。这就是它的解读方式。\\D这两个都是可选的这两个是相同的表达式(\)?(\d{2})?是否允许点(.)是可选的,两位数字是可选的(\.?\d{2})?允许点(.)可选,两位数字可选