2024年3月23日 星期六

[研究]ASP.NET,WebForm,正則表達式,判斷是否符合「西洋年/月/日」或「西洋年/月」日期格式

[研究]ASP.NET,WebForm,正則表達式,判斷是否符合「西洋年/月/日」或「西洋年/月」日期格式

2024-03-23

環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C# + SQL Server 2019 + SQL Server Management Studio (SSMS) 19

********************************************************************************

C# 正則表達式,判斷是否符合YYYY/MM/DD,其中 YYYY 是 4位數西洋年, MM 是2位數月份,D是2位數日期

Default2.aspx.cs

<%@ Page Language="C#" AutoEventWireup="true" 
    CodeBehind="Default.aspx.cs" Inherits="WebApplication2.Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:Label ID="Label1" runat="server" Text="符合者:"></asp:Label>
    </form>
</body>
</html>

Default.aspx.cs

using System;
using System.Text.RegularExpressions;

namespace WebApplication2
{
    public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string[] dates = {
             "2024/03/19",
             "2024/3/19",
             "2024/03/9",
             "2024/3/9",
             "2024/03",
             "2024/3",
             "2024/03/0",
             "2024/0",
             "2024/0/19",
             "2024/03/0"
            };
            //是否符合YYYY/MM/DD 
            string pattern = @"^\d{4}/(0[1-9]|1[0-2])/(0[1-9]|[1-2][0-9]|3[0 -1])$";

            foreach (string date in dates)
            {
                //Console.WriteLine($"{date}: {Regex.IsMatch(date, pattern)}");
                if (Regex.IsMatch(date, pattern))
                    Label1.Text = Label1.Text + date + "<br />";
            }
        }
        //---
    }
}

********************************************************************************

C# 正則表達式,判斷是否符合

YYYY/MM/DD 或 YYYY/M/D 或 YYYY/MM/D 或 YYYY/M/DD 或 YYYY/MM 或 YYYY/M 或 YYYY/0M/0D 或 YYYY/MM/0D 或 YYYY/0M/DD,其中 YYYY 是 4位數西洋年,M 或 MM 是月份,D 或 D 是日期

Default4.aspx.cs

using System;
using System.Text.RegularExpressions;

namespace WebApplication1
{
    public partial class Default4 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string[] dates = {
             "2024/03/19",
             "2024/3/19",
             "2024/03/9",
             "2024/3/9",
             "2024/03",
             "2024/3",
             "2024/03/0",
             "2024/03/19",
             "2024/03/0",
             "2024/03/19",
             "2024/0",
             "2024/03/19",
             "2024/0/19",
             "2024/03/19",
             "2024/0/0",
             "2024/03/0"
         };

            string pattern = @"^(\d{4})/(0?[1-9]|1[0-2])/(0?[1-9]|1\d|2[0-9]|3[01])$";

            foreach (string date in dates)
            {
                //Console.WriteLine($"{date}: {Regex.IsMatch(date, pattern)}");
                if (Regex.IsMatch(date, pattern))
                    Label1.Text = Label1.Text + date + "<br />";
            }
        }
    }
}

這個範例程式碼使用了正規表示式^(\d{4})/(0?[1-9]|1[0-2])/(0?[1-9]|1\d|2[0 -9]|3[01])$ 來符合日期字串。 其中:

  • ^ 表示字串的開始。
  • \d{4} 以四位數字表示表示的年份。
  • / 匹配斜線字元。
  • (0?[1-9]|1[0-2]) 配對月份,可以是1位或2位數字,1-12之間。
  • (0?[1-9]|1\d|2[0-9]|3[01]) 匹配日期,可以是1位或2位數字,根據月份不同,允許的範圍為1-31之 間。
  • $ 表示字串的結尾。

實際測試

********************************************************************************

C# 正則表達式,判斷是否符合

YYYY/MM/DD 或 YYYY/M/D 或 YYYY/MM/D 或 YYYY/M/DD 或 YYYY/MM 或 YYYY/M 或 YYYY/0M/0D 或 YYYY/MM/0D 或 YYYY/0M/DD 或 YYYY/MM 或 YYYY/0M,

其中 YYYY 是 4位數西洋年,M 或 MM 是月份,D 或 D 是日期

string pattern = @"^\d{4}/(0?[1-9]|1[0-2])(/(0?[1-9]|[12]\d|3[01]))?$";

********************************************************************************

提取日期部分並顯示。

SELECT CAST(YourDateTimeColumn AS DATE) AS DatePart FROM YourTable;

SELECT CONVERT(DATE, YourDateTimeColumn) AS DatePart FROM YourTable;

(完)

相關

沒有留言:

張貼留言