RegularExpressionValidator限制输入长度并允许空字符串

时间:2015-03-20 19:24:53

标签: asp.net .net regex

我对正则表达式真的很糟糕,并且正在寻找与此几乎完全相同的另一个问题,但无法让它按照我的需要运行。

我使用的是RegularExpressionValidator,允许任何最多255个字符的字符或根本不允许任何字符。我试过了,

ValidateExpression="^.{255}$" 

但是当我正在检查的文本框为空时,它会抛出一个无法解除的异常。

我也试过

ValidateExpression="^.{,255}$"

谢谢 罗德尼

3 个答案:

答案 0 :(得分:0)

你试过^.{0,255}$吗?不知道你会得到什么例外。

编辑:此外,如果与.Net正则表达式斗争,Regex Hero tester是一个很好的帮助。我知道还有其他网站,但如果你问我这个网站是最好的网站。

答案 1 :(得分:0)

正确的表达是^.{0,255}$

^.{255}$只会匹配,如果只有255个字符,而^.{,255}$将匹配文字字符串“{,255}”。

如果在尝试之后仍然存在问题,您能告诉我们例外吗?

答案 2 :(得分:0)

如果它引发HttpRequestValidationException例外,您可以使用UnvalidatedRequestValues class的成员。

请注意“如果输入控件为空,则验证成功”(MSDN)。您可以添加RequiredFieldValidator字段以确保用户不会将文本框留空(如果您在RequiredFieldValidator控件中使用UpdatePanel控件,请确保验证程序控件和与之关联的控件位于同一面板中 - MSDN):

<asp:textbox id="myTB" 
  runat="Server">
</asp:textbox>
//  ... MAKE SURE YOU DO NOT USE TextMode="Number"!!!
<asp:RequiredFieldValidator
           ID="Value1RequiredValidator"
           ControlToValidate="myTB"
           ErrorMessage="Please enter a number.<br />"
           Display="Dynamic"
           runat="server"/>

至于正则表达式,^.{255}$表示 在字符串开始和结束 之间匹配任何字符(换行符除外)正好255次。我认为允许^[1-9][0-9]{0,254}$(对于'34','104'等值)是有意义的。