利用RegularExpressionValidator或CompareValidator控制項來驗證TextBox內的日期格式

利用RegularExpressionValidator或CompareValidator控制項來驗證TextBox內的日期格式

最近剛好有網路上有人問到這個問題.....
我也去找了解決方法....

第一種是用RegularExpressionValidator控制項來驗證

正規表達示如下:
(19|20)[0-9]{2}[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])

2007/09/24→正確
2007/13/24→錯誤

但這個方法還是有一個缺點.....

2007/02/31→正確(實際上是錯誤的,因為2月不可能有31天)

我想只要再修改一下正規表達示就可以了(但我不太會).....


第二種是用CompareValidator控制項來驗證

首先拉一個CompareValidator控制項,然後設定屬性 Type="date" Operator="DataTypeCheck"

這個方法就可以解決2007/02/31是正確的問題了....

ps.感謝藍色小舖的Insus.NET大大提供此方法.....


原始範例如下...

c#範例

01 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="datetimeVaild_CS.aspx.cs"
02     Inherits="datetimeVaild_CS" %>
03
04 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
05 <html xmlns="http://www.w3.org/1999/xhtml">
06 <head id="Head1" runat="server">
07     <title>未命名頁面</title>
08 </head>
09 <body>
10     <form id="form1" runat="server">
11         <div>
12             <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
13             <br />
14             <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ErrorMessage="RegularExpressionValidator"
15                 ControlToValidate="TextBox1" ValidationExpression="(19|20)[0-9]{2}[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])"></asp:RegularExpressionValidator><br />
16             <asp:CompareValidator ID="CompareValidator1" runat="server" ControlToValidate="TextBox1"
17                 ErrorMessage="CompareValidator" Operator="DataTypeCheck" Type="Date"></asp:CompareValidator>
18             <br />
19             <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /></div>
20     </form>
21 </body>
22 </html>
23