如何编写允许2位小数和空格但没有空格的正则表达式?

时间:2014-01-14 16:45:21

标签: asp.net regex

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

^ \ d *(\ d [0-9])?$

这个表达式可以完成我需要的一切,除了防止输入ONLY空格。它将输入限制为0,1或2位数字,并且不允许在数字内部或之后留出空格。它允许该字段为空白(根本没有输入)。

我想阻止用户只输入空格,因为我意识到有时用户会使用空格键而不是删除键来清除字段的值。

然而,由于某种原因,它只允许输入空格,几乎就像它认为空格(或空格)相当于空白字段(null)。我错过了什么?

编辑:将^字符添加到表达式的开头,在复制到此问题时错过了它。

2 个答案:

答案 0 :(得分:0)

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

^\d*(\.\d{1,2})?$

这告诉我们从字符串的开头只能有0,1或2位数字而没有其他字符。你错过了我认为

字符串开头的检查

编辑:

我在这里测试了你的正则表达式http://regex101.com/r/hC1dL6并且没有出现问题...我认为输入在到达正则表达式之前可能会被修剪掉。我建议你以这种方式进行测试。

<强> EDIT2

来自here

  

字段验证器仅在字段中有内容时触发   验证。要检查字段是否包含数据和正确的日期,您需要   使用两个验证器。必需的字段验证器将确保这一点   输入数据,以及第二个验证器(例如正则表达式)   验证者)将确保输入的数据符合要求   格式。

建议使用两个验证器。

答案 1 :(得分:0)

你的新正则表达式:

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

说明:

  • ^设置起点锚点。它将使space s无效。
  • 验证为空白。
  • 它会使12..12
  • 等格式错误的数字无效
  • 要禁用“捕获组”(为了获得更好的性能等),请使用:^(?:|\d+(?:\.\d{1,2})?)$