ASP.NET验证控件VS C#正则表达式验证

时间:2011-02-20 15:27:19

标签: regex

对我来说,正则表达式验证似乎是直接的,有意义的,而不是使用asp.net验证控件验证所有内容。我正在学习asp.net,并且不想记住所有的asp.net验证控件,当任何表单输入可以通过reqular表达式进行简单验证。我是否正确或应该使用验证控件?

Example:`RequiredFieldValidator vs Regex Solution C# 

if(TextBox1.Text == ""){
 Label1.text = "Name Field is required, Please try again";
 return;
}

CompareValidator vs Regex Solution

if(Regex.IsMatch(TextBox1.Text, @"^[0-9]")){
   if(Convert.ToInt32(TextBox1.Text) > 18){
output.InnerHtml = @"

some code

"; } else{ Label1.Text = "You should be old enough to express out your political views "; return; } } else{ Label1.Text = "You should be old enough to express out your political views"; return; } }

`

用C#做所有事情并不是更好,而不是记住所有那些验证控件

3 个答案:

答案 0 :(得分:0)

验证控件的主要优点是,在大多数情况下,它们将为客户端输出与服务器端验证匹配的JavaScript验证。这可以减少到服务器的往返,这总是有益的。但是,如果你对JavaScript很好,你可以比控件输出更有效地编写客户端部分。

另外需要考虑的是,使用控件时,您可以使用控件上的一个标志在客户端和服务器上打开/关闭验证,如果使用自己的代码,则必须单独处理。

答案 1 :(得分:0)

你是对的,正则表达式验证器可以替换许多其他验证器,前提是你可以编写一个在客户端和服务器端运行良好的验证表达式。

答案 2 :(得分:0)

您可以在正则表达式中执行大量验证工作,但在某些方面,正则表达式并不理想:

  • 日期验证:要么你得到一个非常笨拙的正则表达式,要么你会错过许多合理但非法的日期(如2000年2月29日)。

  • 电子邮件验证。同样的事情 - 你要么拒绝一些有效的地址,要么你允许无效的地址(在任何一种情况下,你都会允许语法正常但不对应实际邮箱的地址)。

  • 一般的数字验证 - 正则表达式适用于匹配文本数据。使用它们来验证数字很麻烦且容易出错。您是否考虑过指数表示法,依赖于区域设置的小数分隔符,千位分隔符,前导零等...?

除此之外,JavaScript正则表达式引擎在尝试编写必须在客户端和服务器端都有效的正则表达式时需要了解一些限制(例如,缺少外观断言)。

最后,您是否意识到示例正则表达式中存在错误?也许使用验证器更安全,除非你真的知道如何构建一个完全按照你打算做的正则表达式...