RegularExpressionValidator不在空白条目上触发

时间:2009-07-06 04:46:54

标签: c# asp.net validation

我想验证仅包含数字的字符串。简单验证?我添加了RegularExpressionValidator,ValidationExpression =“/ d +”。

看起来没问题 - 但是只输入空格时没有验证!甚至许多空间都经过验证。我不要求这是强制性的。

我可以修剪服务器,但不能正则表达式做任何事情!

5 个答案:

答案 0 :(得分:12)

这是设计上的,往往会让很多人失望。 RegularExpressionValidator不强制字段,并允许它为空并接受空格。 \ d +格式是正确的。即使使用^ \ d + $也会导致允许空格的相同问题。强制禁止空格的唯一方法是在同一控件上包含一个RequiredFieldValidator。

这是RegularExpressionValidator documentation,其中说明:

  

如果输入验证成功   控制是空的。如果值是   相关输入所需   控制,使用RequiredFieldValidator   控制除了   RegularExpressionValidator控件。

代码隐藏中字段的正则表达式检查将按预期工作;这只是RegularExpressionValidator的一个问题。所以你可以想象使用CustomValidator代替args.IsValid = Regex.IsMatch(txtInput.Text, @"^\d+$"),如果它包含空格,那么它将返回false。但是,如果是这样的话,为什么不按照文档使用RequiredFieldValidator并避免编写自定义代码?另外,CustomValidator表示强制回发(除非您指定具有等效javascript正则表达式的客户端验证脚本)。

答案 1 :(得分:1)

尝试使用Ajax FilteredTextbox,这将不允许空间....... http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/FilteredTextBox/FilteredTextBox.aspx

答案 2 :(得分:1)

你的问题有点难以理解,但如果你问如何写一个只接受数字的正则表达式,我认为你的错误在于使用正斜杠而不是反斜杠。尝试

"\d+"

答案 3 :(得分:1)

RegularExpressionValidator是进行正则表达式检查的一个很好的包装器,但它不会对空控件进行验证。您可以使用CustomValidator,然后在附加到验证器的javascript函数中执行正则表达式检查。

只要将ValidateEmptyText属性设置为true,它就会对空(空白)控件进行验证。

您可以在MSDN here上了解有关CustomValidators的更多信息。

答案 4 :(得分:0)

尝试使用^ \ d + $强制数字填充整行。 ^ =行开始$ =行结束