有一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.设置TextBox1的CausesValidation属性不起作用,无论CausesValidation为True或False,在TextBox1失去焦点时都会进行验证
2.在TextBox1没输入内容时,点击提交按钮能通过验证,Response.Write(RegularExpressionValidator1.IsValid.ToString());输出的值为True
请问怎么解决这两个问题
2.楼主的正则书写有问题
^[^\d][\da-z-A-Z\u4E00-\u9FA5]{3,19}$
按照这个是非数字的任意字符开头都可,也就是类似于“<,!,&,}”之类的字符都可以
楼主需要的是以什么为开头的,字母吗,允许出现的字符又是什么样的,看楼主正则中所写应该是想要字母,数字,下划线和汉字吧,试下这个
^(?!$)[a-zA-Z][\w\u4E00-\u9FA5]{3,19}$
验证控件的特性应该就是这样,想在输入的时候就验证,只有设置textbox的输入长度。
CausesValidation属性似乎对RegularExpressionValidator控件无效
当要判断的控件值为空时RegularExpressionValidator似乎不进行验证 我想实现的是类似csdn的注册效果,不过又懒得手写代码,才选择asp.net的验证控件
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应该是无法判断非空的