Asp.net 如何编写允许2位小数和空格但不允许空格的正则表达式?

Asp.net 如何编写允许2位小数和空格但不允许空格的正则表达式?,asp.net,regex,Asp.net,Regex,我有以下正则表达式,用于ASP.NET RegularExpressionValidator: ^\d*\d[0-9]$ 这个表达式做了我需要的一切,除了防止只输入空格。它将输入限制为0、1或2位数字,并且不允许数字内或数字后有空格。它允许字段为空,不输入任何内容 我想防止用户只键入空格,因为我意识到有时用户会用空格键而不是delete键擦除字段的值 然而,出于某种原因,它只允许输入空格,就像它认为一个空格或多个空格相当于一个空字段null一样。我错过了什么 编辑:在表达式开头添加了^chara

我有以下正则表达式,用于ASP.NET RegularExpressionValidator:

^\d*\d[0-9]$

这个表达式做了我需要的一切,除了防止只输入空格。它将输入限制为0、1或2位数字,并且不允许数字内或数字后有空格。它允许字段为空,不输入任何内容

我想防止用户只键入空格,因为我意识到有时用户会用空格键而不是delete键擦除字段的值

然而,出于某种原因,它只允许输入空格,就像它认为一个空格或多个空格相当于一个空字段null一样。我错过了什么


编辑:在表达式开头添加了^character,在复制到此问题时遗漏了它。

如果您只需要0到3位数字,我建议您使用此数字

^\d*(\.\d{1,2})?$
这说明从字符串的开头只能有0、1或2个数字,而不能有其他字符。我想你从字符串的开头就漏掉了支票

编辑:

我在这里测试了你的正则表达式,它没有问题。。。我认为有可能在到达正则表达式之前对输入进行了修剪。我建议你用那种方式进行测试

编辑2

字段验证器仅在字段中有内容时启动 验证。要检查字段是否有数据和正确的日期,您需要 使用两个验证器。所需的字段验证器将确保 数据被输入,第二个验证器,例如正则表达式 验证器将确保输入的数据符合要求 格式

建议使用两个验证器。

您的新正则表达式:

^(|\d+(\.\d{1,2})?)$
说明:

^设置起始点定位。它将使空格无效。 它验证空白。 它使格式错误的数字无效,如12。12 要禁用捕获组以获得更好的性能等,请使用:^?:\d+?:\。\d{1,2}$
对不起,我的复制粘贴不好。实际上,我在表达式前面有^字符。我不想限制字符数,最多只能保留两位小数。我尝试了您提供的两个表达式,但它仍然允许空格,除非它们是包含其他字符的输入的一部分。@BeachBum我的测试不会返回空格的匹配项。你能发布你实际的正则表达式测试代码吗?它也不会在正则表达式测试程序中为我返回空格匹配。就这一点而言,我最初的表达也没有。我想问题在于,在使用RegularExpressionValidator的ASP.NET页面中,它确实存在。因此,出于某种原因,该控件的行为有点不标准。似乎正则表达式做了您想要的事情,并且使用它的代码允许空白,而不管正则表达式是什么。我认为这是.NET的RegularExpressionValidator的问题。我可以在代码的背面删除空格,但我希望能够让它工作,以防止空格在第一位。NET会导致它这样做似乎有些奇怪。另外,我希望它允许一个空白字段。我只是不希望它允许空格字符。两件不同的事情。