我想验证仅包含数字的字符串。简单验证?我添加了RegularExpressionValidator,ValidationExpression =“/ d +”。
看起来没问题 - 但是只输入空格时没有验证!甚至许多空间都经过验证。我不要求这是强制性的。
我可以修剪服务器,但不能正则表达式做任何事情!
答案 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 + $强制数字填充整行。 ^ =行开始$ =行结束