RegularExpressionValidator不在空白条目上触发

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

看起来没问题 – 但只输入空间时没有任何validation! 甚至许多空间都经过validation。 我不需要这是强制性的。

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

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

这是根据RegularExpressionValidator文档 ,其中指出:

如果输入控件为空,则validation成功。 如果关联的输入控件需要一个值,除了RegularExpressionValidator控件之外,还要使用RequiredFieldValidator控件。

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

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

"\d+"

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

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

您可以在此处阅读有关MSDN上的CustomValidators的更多信息。

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

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