有一textbox控件TextBox1和一个RegularExpressionValidator控件代码如下:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server"  ControlToValidate="TextBox1" ErrorMessage="长度不能小于4位" ValidationExpression="^[^\d][\da-z-A-Z\u4E00-\u9FA5]{3,19}$"></asp:RegularExpressionValidator>我想实现的是对TextBox1中的值进行验证:必须以字符开通,长度在4到20位之间
这里存在几个问题:
1.设置TextBox1的CausesValidation属性不起作用,无论CausesValidation为True或False,在TextBox1失去焦点时都会进行验证
2.在TextBox1没输入内容时,点击提交按钮能通过验证,Response.Write(RegularExpressionValidator1.IsValid.ToString());输出的值为True
请问怎么解决这两个问题

解决方案 »

  1.   

    1.没测试环境,暂时无法回答,不过记得以前看过教程,可能跟IsPostBack有关吧
    2.楼主的正则书写有问题
    ^[^\d][\da-z-A-Z\u4E00-\u9FA5]{3,19}$
    按照这个是非数字的任意字符开头都可,也就是类似于“<,!,&,}”之类的字符都可以
    楼主需要的是以什么为开头的,字母吗,允许出现的字符又是什么样的,看楼主正则中所写应该是想要字母,数字,下划线和汉字吧,试下这个
    ^(?!$)[a-zA-Z][\w\u4E00-\u9FA5]{3,19}$
      

  2.   

    1.设置TextBox1的CausesValidation属性不起作用,无论CausesValidation为True或False,在TextBox1失去焦点时都会进行验证
    验证控件的特性应该就是这样,想在输入的时候就验证,只有设置textbox的输入长度。
      

  3.   

    楼上的正则我试了,还是不行
    CausesValidation属性似乎对RegularExpressionValidator控件无效
    当要判断的控件值为空时RegularExpressionValidator似乎不进行验证 我想实现的是类似csdn的注册效果,不过又懒得手写代码,才选择asp.net的验证控件
      

  4.   

    情况和xiayee(小米)说的有点像,不过TextBox只有maxlen没有minlen,不然就能判空了
      

  5.   

    又重新看了下
    1、看一个你的textbox的AutoPostBack属性
    参考
    ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.NETDEVFX.v20.chs/cpref16/html/P_System_Web_UI_WebControls_TextBox_CausesValidation.htm2、查了一下,判断非空应该用RequiredFieldValidator,判断格式才用RegularExpressionValidator,RegularExpressionValidator应该是无法判断非空的