使用.NET时验证多行文本输入

时间:2009-02-19 13:47:17

标签: c# asp.net regex validation

我有一个HtmlTextArea,我想限制用户输入的字符数为500.

目前我使用的是RegularExpressionValidator ......

RegularExpressiondValidator val = new RegularExpressiondValidator ();
val.ValidationExpression = "^.{0,500}$";
val.ControlToValidate = id;
val.ErrorMessage = "blah";

...当文本输入单行时,这很好,但只要文本包含新行字符(即多行),它就会立即失败验证。

我意识到有不同的正则表达式引擎,我需要用.NET测试一个(有人能指出我在线的好方向吗?)但我尝试过其他一些事情,包括前置“( ?m)“到我的表达式字符串,并用\ A和\ Z替换^和$,但到目前为止没有运气。

另一个相关的问题是,我可以避免使用正则表达式并将此验证器以某种方式链接到我自己的验证函数吗?

3 个答案:

答案 0 :(得分:6)

“。”不包括新行。

^((|。\ n)的{0500})$

This page也可能有所帮助,它是一个正则表达式备忘单。

答案 1 :(得分:6)

将正则表达式更改为以下

"^(.|\n){0,500}$";

。字符匹配除换行符之外的所有内容。 or子句将解决您的问题。

答案 2 :(得分:1)

我会以两种方式执行此操作,如果您了解javascript并希望限制客户端字符长度,则可以使用jQuery(一种流行的javascript扩展库)来执行此操作。

$(document).ready(function(){
  var $TextBox = $("#<%=TextBox.ClientID %>");

  $TextBox.keyup(function(){
     return $TextBox.length <= <%=TextBox.MaxLength %>;
  });
});

然后使用自定义验证器或按钮单击方法执行类似的服务器检查。

还有一些方法可以使用javascript启用和禁用ASP.Net Validators,因此您也可以查看它。