C#用正则表达式验证格式:电话号码、密码、邮编、手机号码、身份证、指定的小数点后位数、有效月、有效日

        正则表达式在程序设计中有着重要的位置,经常被用于处理字符串信息。

        用Regex类的IsMatch方法,使用正则表达式可以验证电话号码是否合法。

一、涉及到的知识点

        Regex类的IsMatch方法用于指示正则表达式使用pattern参数中指定的正则表达式是否在输入字符串中找到匹配项。语法格式如下:

public static bool IsMatch(string input,string patterm)参数说明
Input:字符串对象,表示要搜索匹配项的字符串。
Pattern:字符串对象,表示要匹配的正则表达式模式。
Bool:返回布尔值,如果正则表达式找到匹配项,则返回值为true,否则返回值为false。

        其中,正则表达式中匹配位置的元字符“^”。正则表达式中“^”用于匹配行首,如果正则表达式匹配以First开头的行,则正则表达式如下:^First。

        如果电话号码的格式:xxx-xxxxxxxx,其中,x—代表数字,那么匹配的正则表达式是:^(\d{3,4}-)?\d{6,8}$。

        如果密码有a-z、A-Z、0-9组成,并且至少一个大小写字母数字,那么其正则表达式:[A-Za-z]+[0-9];

        如果密码有a-z、A-Z、0-9组成,并且至少一个大小写字母数字,那么其正则表达式:[A-Za-z0-9]+,其中+有没有都可以;

        如果把正则表达式改为[A-Z]+[a-z]+[0-9],就变成依次至少一个大写、一个小写、一个数字了,打乱了顺序都不行。

        由6位数字组成的邮编的正则表达式:^\d{6}$;

        手机号码由11位数字组成,以1开头、第二位数字为3,4,5,6,7,8,9中一个、第三位到十一位数字为0到9的任意一个数字,其正则表达式:^1[3-9]\d{9}$;

        18位身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码。其中:

  • 地址码:表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按GB/T2260的规定执行。其中前两位为省份编码。
  • 出生日期码:表示编码对象出生的年、月、日,按GB/T7408的规定执行,格式如20240130,之间不用分隔符。
  • 顺序码:表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。
  • 校验码计算方式:

        (1)对前17位数字本体码加权求和公式为:S = Sum(Ai * Wi), i = 1, ... , 17。其中Ai表示第i位置上的身份证号码数值;Wi表示第i位置上的加权因子,按位置依次为:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2;
        (2)以11对计算结果取模:Y = mod(S, 11);
        (3)根据模的值得到对应的校验码,对应关系为:
             Y值:0 1 2 3 4 5 6 7 8 9 10
        校验码:1 0 X 9 8 7 6 5 4 3 2

        身份证号正则表达式:

//闰年
^[1-9]\d{5}(19|20)\d{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2]\d|3[0-1])|(04|06|09|11)(0[1-9]|[1-2]\d|30)|02(0[1-9]|[1-2]\d))\d{3}[\dXx]$
//平年
^[1-9]\d{5}(19|20)\d{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2]\d|3[0-1])|(04|06|09|11)(0[1-9]|[1-2]\d|30)|02(0[1-9]|1\d|2[0-8]))\d{3}[\dXx]$

         用正则表达式可以校验指定小数点后的位数是否匹配,比如验证小数点后位数是否2位的正则表达式:^[0-9]+(.\d{2})?$,^[0-9]+.\d{2}$,^[0-9]+\.\d{2}$,^[0-9]+\.[0-9]{2}$;

        验证输入的数值是否有效的月份的正则表达式:^(0?[[1-9]1[0-2]]$,其中0?表示匹配零个或1个“0”,[1-9]表示匹配数字1~9,1[0-2]表示匹配数字10、11、12。

        验证输入的日期型字符串是否符合日期,需要判断是否是小月、大月、二月闰年、二月平年,因此需要用4个正则表达式才能正确表达任意的输入是否符合日期的规则;完整的正则表达式:小月"^((0?[1-9])|((1|2)[0-9])|30)$",大月"^((0?[1-9])|((1|2)[0-9])|30|31)$",润二月"^((0?[1-9])|((1|2)[0-9]))$",平二月"^((0?[1-9])|((1|2)[0-8]))$"。

        如果用DateTime.ParseExact方法验证输入的日期格式,不需要复杂的判断,简简单单就可以实现设计目的。

 

二、实例1:验证电话号码的格式

//使用正则表达式验证电话号码
namespace _070
{public partial class Form1 : Form{private Label? label1;private Label? label2;private Label? label3;private Button? button1;private TextBox? textBox1;public Form1(){InitializeComponent();Load += Form1_Load;}private void Form1_Load(object? sender, EventArgs e){// // label1// label1 = new Label{AutoSize = true,Location = new Point(36, 22),Name = "label1",Size = new Size(68, 17),TabIndex = 0,Text = "输入号码:"};// // label2//        label2 = new Label{AutoSize = true,Location = new Point(156, 49),Name = "label2",Size = new Size(79, 17),TabIndex = 1,Text = "xxx-xxxxxxxx"};// // label3//          label3 = new Label{AutoSize = true,Location = new Point(36, 49),Name = "label3",Size = new Size(68, 17),TabIndex = 2,Text = "号码格式:"};// // button1//         button1 = new Button{Location = new Point(160, 76),Name = "button1",Size = new Size(75, 23),TabIndex = 3,Text = "号码验证",UseVisualStyleBackColor = true};button1.Click += Button1_Click;// // textBox1// textBox1 = new TextBox{Location = new Point(115, 16),Name = "textBox1",Size = new Size(120, 23),TabIndex = 4};// // Form1// AutoScaleDimensions = new SizeF(7F, 17F);AutoScaleMode = AutoScaleMode.Font;ClientSize = new Size(294, 111);Controls.Add(textBox1);Controls.Add(button1);Controls.Add(label3);Controls.Add(label2);Controls.Add(label1);Name = "Form1";StartPosition = FormStartPosition.CenterScreen;Text = "使用正则表达式验证电话号码";}/// <summary>/// 验证电话号码格式是否正确/// </summary>private void Button1_Click(object? sender, EventArgs e){if (!IsTelephone(textBox1!.Text)){ MessageBox.Show("电话号码格式不正确"); }else { MessageBox.Show("电话号码格式正确"); }}/// <summary>/// 验证电话号码格式是否匹配/// </summary>/// <param name="str_telephone">电话号码信息</param>/// <returns>方法返回布尔值</returns>public static bool IsTelephone(string str_telephone){return MyRegex().IsMatch(str_telephone);}[System.Text.RegularExpressions.GeneratedRegex(@"^(\d{3,4}-)?\d{6,8}$")]private static partial System.Text.RegularExpressions.Regex MyRegex();}
}

三、实例2:验证密码的格式

// 使用正则表达式验证密码格式
namespace _071
{public partial class Form1 : Form{private GroupBox? groupBox1;private Button? button1;private TextBox? textBox1;private Label? label1;public Form1(){InitializeComponent();Load += Form1_Load;}private void Form1_Load(object? sender, EventArgs e){// // button1// button1 = new Button{Location = new Point(171, 58),Name = "button1",Size = new Size(100, 23),TabIndex = 2,Text = "验证密码格式",UseVisualStyleBackColor = true};button1.Click += Button1_Click;// // textBox1// textBox1 = new TextBox{Location = new Point(126, 24),Name = "textBox1",Size = new Size(145, 23),TabIndex = 1};// // label1//label1 = new Label{AutoSize = true,Location = new Point(35, 30),Name = "label1",Size = new Size(68, 17),TabIndex = 0,Text = "输入密码:"};// // groupBox1// groupBox1 = new GroupBox{Location = new Point(12, 12),Name = "groupBox1",Size = new Size(307, 87),TabIndex = 0,TabStop = false,Text = "密码必须由数字和大小写字母组成"};groupBox1.Controls.Add(button1);groupBox1.Controls.Add(textBox1);groupBox1.Controls.Add(label1);groupBox1.SuspendLayout();// // Form1// AutoScaleDimensions = new SizeF(7F, 17F);AutoScaleMode = AutoScaleMode.Font;ClientSize = new Size(331, 111);Controls.Add(groupBox1);Name = "Form1";StartPosition = FormStartPosition.CenterScreen;Text = "正则表达式验证密码格式";groupBox1.ResumeLayout(false);groupBox1.PerformLayout();}private void Button1_Click(object? sender, EventArgs e){if (!IsPassword(textBox1!.Text.Trim())){ MessageBox.Show("密码格式不正确!!!"); }else{MessageBox.Show("密码格式正确!!!!!");}}/// <summary>/// 验证码码输入条件/// </summary>/// <param name="str_password">密码字符串</param>/// <returns>返回布尔值</returns>public static bool IsPassword(string str_password){return MyRegex().IsMatch(str_password);}[System.Text.RegularExpressions.GeneratedRegex(@"[A-Za-z]+[0-9]")]//至少有一个字母,至少有一个数字//[System.Text.RegularExpressions.GeneratedRegex(@"[A-Z]+[a-z]+[0-9]")]//依次至少有一个大写一个小写一个//[System.Text.RegularExpressions.GeneratedRegex(@"[A-Za-z0-9]+")]//至少一个private static partial System.Text.RegularExpressions.Regex MyRegex();}
}

四、实例3:验证邮编的格式

// 用正则表达式验证邮编合法性
namespace _072
{public partial class Form1 : Form{private GroupBox? groupBox1;private TextBox? textBox1;private Button? button1;private Label? label1;public Form1(){InitializeComponent();Load += Form1_Load;}private void Form1_Load(object? sender, EventArgs e){// // textBox1// textBox1 = new TextBox{Location = new Point(139, 32),Name = "textBox1",Size = new Size(100, 23),TabIndex = 2};// // button1// button1 = new Button{Location = new Point(139, 61),Name = "button1",Size = new Size(100, 23),TabIndex = 1,Text = "验证邮编",UseVisualStyleBackColor = true};button1.Click += Button1_Click;// // label1// label1 = new Label{AutoSize = true,Location = new Point(55, 35),Name = "label1",Size = new Size(68, 17),TabIndex = 0,Text = "输入邮编:"};// // groupBox1// groupBox1 = new GroupBox{Location = new Point(12, 12),Name = "groupBox1",Size = new Size(280, 98),TabIndex = 0,TabStop = false,Text = "验证邮编格式:"};groupBox1.Controls.Add(textBox1);groupBox1.Controls.Add(button1);groupBox1.Controls.Add(label1);groupBox1.SuspendLayout();// // Form1// AutoScaleDimensions = new SizeF(7F, 17F);AutoScaleMode = AutoScaleMode.Font;ClientSize = new Size(304, 122);Controls.Add(groupBox1);Name = "Form1";StartPosition = FormStartPosition.CenterScreen;Text = "验证邮编格式合法性";groupBox1.ResumeLayout(false);groupBox1.PerformLayout();}private void Button1_Click(object? sender, EventArgs e){if (!IsPostalcode(textBox1!.Text)){ MessageBox.Show("邮政编号不正确!!!"); }else {MessageBox.Show("邮政编号正确!!!!!"); }}/// <summary>/// 验证邮编格式是否正确/// </summary>/// <param name="str_postalcode">邮编字符串</param>/// <returns>返回布尔值</returns>public static bool IsPostalcode(string str_postalcode){return MyRegex().IsMatch(str_postalcode);}[System.Text.RegularExpressions.GeneratedRegex(@"^\d{6}$")]private static partial System.Text.RegularExpressions.Regex MyRegex();}
}

五、实例4:验证手机号码的格式

//用正则表达式验证手机号码合法性
namespace _073
{public partial class Form1 : Form{private GroupBox? groupBox1;private Button? button1;private TextBox? textBox1;private Label? label1;public Form1(){InitializeComponent();Load += Form1_Load;}private void Form1_Load(object? sender, EventArgs e){// // button1// button1 = new Button{Location = new Point(129, 60),Name = "button1",Size = new Size(120, 23),TabIndex = 3,Text = "验证手机号码",UseVisualStyleBackColor = true};button1.Click += Button1_Click;// // textBox1// textBox1 = new TextBox{Location = new Point(129, 31),Name = "textBox1",Size = new Size(120, 23),TabIndex = 1};// // label1//           label1 = new Label{AutoSize = true,Location = new Point(31, 37),Name = "label1",Size = new Size(92, 17),TabIndex = 0,Text = "输入手机号码:"};// // groupBox1// groupBox1 = new GroupBox{Location = new Point(12, 12),Name = "groupBox1",Size = new Size(280, 92),TabIndex = 0,TabStop = false,Text = "验证手机号码"};groupBox1.Controls.Add(button1);groupBox1.Controls.Add(textBox1);groupBox1.Controls.Add(label1);groupBox1.SuspendLayout();// // Form1// AutoScaleDimensions = new SizeF(7F, 17F);AutoScaleMode = AutoScaleMode.Font;ClientSize = new Size(304, 122);Controls.Add(groupBox1);Name = "Form1";StartPosition = FormStartPosition.CenterScreen;Text = "验证手机号码合法性";groupBox1.ResumeLayout(false);groupBox1.PerformLayout();}private void Button1_Click(object? sender, EventArgs e){if (!IsHandset(textBox1!.Text)){ MessageBox.Show("手机号不正确!!!"); }else{MessageBox.Show("手机号正确!!!!!"); }}/// <summary>/// 验证手机号是否正确/// </summary>/// <param name="str_handset">手机号码字符串</param>/// <returns>返回布尔值</returns>public static bool IsHandset(string str_handset){return MyRegex().IsMatch(str_handset);}[System.Text.RegularExpressions.GeneratedRegex(@"^[1]+[3-9]+\d{9}$")]private static partial System.Text.RegularExpressions.Regex MyRegex();}
}

六、实例5:验证身份证号码的格式

// 用正则表达式验证身份证号码合法性
namespace _074
{public partial class Form1 : Form{private GroupBox? groupBox1;private Button? button1;private TextBox? textBox1;private Label? label1;public Form1(){InitializeComponent();Load += Form1_Load;}private void Form1_Load(object? sender, EventArgs e){// // label1// label1 = new Label{AutoSize = true,Location = new Point(16, 28),Name = "label1",Size = new Size(104, 17),TabIndex = 0,Text = "输入身份证号码:"};// // textBox1// textBox1 = new TextBox{Location = new Point(125, 22),Name = "textBox1",Size = new Size(140, 23),TabIndex = 1};// // button1// button1 = new Button{Location = new Point(190, 57),Name = "button1",Size = new Size(75, 23),TabIndex = 2,Text = "验证",UseVisualStyleBackColor = true};button1.Click += Button1_Click;// // groupBox1// groupBox1 = new GroupBox{Location = new Point(12, 12),Name = "groupBox1",Size = new Size(280, 99),TabIndex = 0,TabStop = false,Text = "验证身份证号码"};groupBox1.Controls.Add(button1);groupBox1.Controls.Add(textBox1);groupBox1.Controls.Add(label1);groupBox1.SuspendLayout();// // Form1// AutoScaleDimensions = new SizeF(7F, 17F);AutoScaleMode = AutoScaleMode.Font;ClientSize = new Size(304, 123);Controls.Add(groupBox1);Name = "Form1";StartPosition = FormStartPosition.CenterScreen;Text = "验证身份证号码合法性";groupBox1.ResumeLayout(false);groupBox1.PerformLayout();}private void Button1_Click(object? sender, EventArgs e){if (!IsIDcard(textBox1!.Text.Trim())){ MessageBox.Show("身份证号不正确!!!");}else { MessageBox.Show("身份证号正确!!!!!"); }}/// <summary>/// 验证身份证号是否正确/// </summary>/// <param name="idcard">身份证号字符串</param>/// <returns>返回布尔值</returns>public static bool IsIDcard(string idcard){if (DateTime.IsLeapYear(Convert.ToInt32(idcard.Substring(6, 4)))){return MyRegex().IsMatch(idcard);}else{return MyRegex1().IsMatch(idcard);}    }[System.Text.RegularExpressions.GeneratedRegex(@"(^[1-9]\d{5}(19|20)\d{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2]\d|3[0-1])|(04|06|09|11)(0[1-9]|[1-2]\d|30)|02(0[1-9]|[1-2]\d))\d{3}[\dXx]$)")]private static partial System.Text.RegularExpressions.Regex MyRegex();[System.Text.RegularExpressions.GeneratedRegex(@"(^[1-9]\d{5}(19|20)\d{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2]\d|3[0-1])|(04|06|09|11)(0[1-9]|[1-2]\d|30)|02(0[1-9]|1\d|2[0-8]))\d{3}[\dXx]$)")]private static partial System.Text.RegularExpressions.Regex MyRegex1();}
}

七、实例6:验证小数点后位数是否2位

// 验证小数点后是否为2位
namespace _075
{public partial class Form1 : Form{private GroupBox? groupBox1;private Button? button1;private TextBox? textBox1;private Label? label1;public Form1(){InitializeComponent();Load += Form1_Load;}private void Form1_Load(object? sender, EventArgs e){// // label1// label1 = new Label{AutoSize = true,Location = new Point(25, 30),Name = "label1",Size = new Size(68, 17),TabIndex = 0,Text = "输入小数:"};// // textBox1// textBox1 = new TextBox{Location = new Point(121, 24),Name = "textBox1",Size = new Size(135, 23),TabIndex = 1};// // button1// button1 = new Button{Location = new Point(181, 59),Name = "button1",Size = new Size(75, 23),TabIndex = 2,Text = "验证",UseVisualStyleBackColor = true};button1.Click += Button1_Click;// // groupBox1// groupBox1 = new GroupBox{Location = new Point(12, 11),Name = "groupBox1",Size = new Size(280, 100),TabIndex = 0,TabStop = false,Text = "验证小数点后位数"};groupBox1.Controls.Add(button1);groupBox1.Controls.Add(textBox1);groupBox1.Controls.Add(label1);groupBox1.SuspendLayout();// // Form1// AutoScaleDimensions = new SizeF(7F, 17F);AutoScaleMode = AutoScaleMode.Font;ClientSize = new Size(304, 123);Controls.Add(groupBox1);Name = "Form1";StartPosition = FormStartPosition.CenterScreen;Text = "验证小数点后是否2位";groupBox1.ResumeLayout(false);groupBox1.PerformLayout();}private void Button1_Click(object? sender, EventArgs e){if (!IsDecimal(textBox1!.Text.Trim())){ MessageBox.Show("请输入两位小数!!!", "提示"); }else{ MessageBox.Show("输入正确!!!!!", "提示"); }}/// <summary>/// 验证小数是否正确/// 等效的正则:@"^[0-9]+\.\d{2}$"/// 等效的正则:@"^[0-9]+(.\d{2})$"/// 等效的正则:@"^[0-9]+.\d{2}$"/// 等效的正则:@"^[0-9]+\.[0-9]{2}$"/// </summary>/// <param name="str_decimal">小数字符串</param>/// <returns>返回布尔值</returns>public static bool IsDecimal(string str_decimal){return MyRegex().IsMatch(str_decimal);}[System.Text.RegularExpressions.GeneratedRegex(@"^[0-9]+(.\d{2})?$")]private static partial System.Text.RegularExpressions.Regex MyRegex();}
}

八、实例7:验证输入的数值是否有效月

// 用正则表达式验证输入的数字是否有效月
namespace _076
{public partial class Form1 : Form{private GroupBox? groupBox1;private Button? button1;private TextBox? textBox1;private Label? label1;public Form1(){InitializeComponent();Load += Form1_Load;}private void Form1_Load(object? sender, EventArgs e){// // label1// label1 = new Label{AutoSize = true,Location = new Point(34, 33),Name = "label1",Size = new Size(92, 17),TabIndex = 0,Text = "输入月份数值:"};// // textBox1// textBox1 = new TextBox{Location = new Point(132, 30),Name = "textBox1",Size = new Size(100, 23),TabIndex = 1};// // button1// button1 = new Button{Location = new Point(157, 59),Name = "button1",Size = new Size(75, 23),TabIndex = 2,Text = "验证",UseVisualStyleBackColor = true};button1.Click += Button1_Click;// // groupBox1// groupBox1 = new GroupBox{Location = new Point(12, 11),Name = "groupBox1",Size = new Size(280, 100),TabIndex = 0,TabStop = false,Text = "验证是否有效的月"};groupBox1.Controls.Add(button1);groupBox1.Controls.Add(textBox1);groupBox1.Controls.Add(label1);groupBox1.SuspendLayout();// // Form1// AutoScaleDimensions = new SizeF(7F, 17F);AutoScaleMode = AutoScaleMode.Font;ClientSize = new Size(304, 123);Controls.Add(groupBox1);Name = "Form1";StartPosition = FormStartPosition.CenterScreen;Text = "验证数字是否有效月";groupBox1.ResumeLayout(false);groupBox1.PerformLayout();}private void Button1_Click(object? sender, EventArgs e){if (!IsMonth(textBox1!.Text.Trim())){MessageBox.Show("输入月份不正确!!!", "提示");}else{MessageBox.Show("输入信息正确!!!!!", "提示"); }}/// <summary>/// 验证月份是否正确/// </summary>/// <param name="str_Month">月份信息字符串</param>/// <returns>返回布尔值</returns>public static bool IsMonth(string str_Month){return MyRegex().IsMatch(str_Month);}[System.Text.RegularExpressions.GeneratedRegex(@"^(0?[[1-9]|1[0-2])$")]private static partial System.Text.RegularExpressions.Regex MyRegex();}
}

 

九、实例8:用两种方法分别验证输入是否有效日期

//DateTime.ParseExact方法验证输入的日期格式是否正确
//用正则表达式验证输入的日期格式是否正确
using System.Globalization;namespace _077
{public partial class Form1 : Form{private GroupBox? groupBox1;private Button? button1;private Button? button2;private static TextBox? textBox1;private Label? label1;private Label?label2;public Form1(){InitializeComponent();Load += Form1_Load;}private void Form1_Load(object? sender, EventArgs e){// // label1// label1 = new Label{AutoSize = true,Location = new Point(31, 21),Name = "label1",Size = new Size(92, 17),TabIndex = 0,Text = "输入日期数值:"};// // label2// label2 = new Label{AutoSize = true,Location = new Point(31, 38),Name = "label2",Size = new Size(96, 17),TabIndex = 3,Text = "(如:20240528)"};// // textBox1// textBox1 = new TextBox{Location = new Point(147, 15),Name = "textBox1",Size = new Size(100, 23),TabIndex = 1};// // button1// button1 = new Button{Location = new Point(172, 46),Name = "button1",Size = new Size(75, 23),TabIndex = 2,Text = "验证1",UseVisualStyleBackColor = true};button1.Click += Button1_Click;// // button2// button2 = new Button{Location = new Point(172, 69),Name = "button2",Size = new Size(75, 23),TabIndex = 4,Text = "验证2",UseVisualStyleBackColor = true};button2.Click += Button2_Click;// // groupBox1// groupBox1 = new GroupBox{Location = new Point(12, 11),Name = "groupBox1",Size = new Size(280, 100),TabIndex = 0,TabStop = false,Text = "是否有效日期"};groupBox1.Controls.Add(button1);groupBox1.Controls.Add(button2);groupBox1.Controls.Add(textBox1);groupBox1.Controls.Add(label1);groupBox1.Controls.Add(label2);groupBox1.SuspendLayout();// // Form1// AutoScaleDimensions = new SizeF(7F, 17F);AutoScaleMode = AutoScaleMode.Font;ClientSize = new Size(304, 123);Controls.Add(groupBox1);Name = "Form1";StartPosition = FormStartPosition.CenterScreen;Text = "验证数值是否有效日期";groupBox1.ResumeLayout(false);groupBox1.PerformLayout();}/// <summary>/// DateTime.ParseExact方法验证输入的日期格式是否正确/// </summary>private void Button1_Click(object? sender, EventArgs e){string format = "yyyyMMdd";CultureInfo provider = CultureInfo.CurrentCulture;try{DateTime result = DateTime.ParseExact(textBox1!.Text.Trim(), format, provider);MessageBox.Show("输入的日期格式正确.");}catch (FormatException){MessageBox.Show("输入的日期格式不对.");}}/// <summary>/// 用正则表达式验证输入的日期格式是否正确/// </summary>private void Button2_Click(object? sender, EventArgs e){int year = Convert.ToInt32(textBox1!.Text.Substring(0, 4));int month = Convert.ToInt32(textBox1!.Text.Substring(4, 2));string date = textBox1!.Text.Substring(6, 2);if (textBox1!.Text != ""){if (year <= 9999 && year >= 1800){if(month > 1 || month <= 12){if (IsDay(year,month,date)){MessageBox.Show("输入天数正确!!!", "提示");}else{MessageBox.Show("输入天数不正确!!!!!", "提示");}}else{MessageBox.Show("输入的月不正确!!!", "提示");}}else{MessageBox.Show("输入的年不正确!!!", "提示");}}else{MessageBox.Show("输入的日期不能为空!", "提示");}  }/// < summary >/// 验证输入的数值是否是有效的日期/// 验证顺序:是小月?是大月?是2月?都不是那就是其它了/// </ summary >/// < param name = "daytime" > 每月的天数 </ param >/// < returns > 返回布尔值 </ returns >private static bool IsDay(int year, int month, string daytime){if (month == 04 || month == 06 || month == 09 || month == 11 || month == 4 || month == 6 || month == 9){return MyRegex().IsMatch(daytime); }else if (month == 01 || month == 03 || month == 05 || month == 07 || month == 08 || month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12){return MyRegex1().IsMatch(daytime);}else if (month == 2){if (DateTime.IsLeapYear(year)){return MyRegex2().IsMatch(daytime);}else{return MyRegex3().IsMatch(daytime);}}else{return false;}}[System.Text.RegularExpressions.GeneratedRegex(@"^((0?[1-9])|((1|2)[0-9])|30)$")]private static partial System.Text.RegularExpressions.Regex MyRegex();[System.Text.RegularExpressions.GeneratedRegex(@"^((0?[1-9])|((1|2)[0-9])|30|31)$")]private static partial System.Text.RegularExpressions.Regex MyRegex1();[System.Text.RegularExpressions.GeneratedRegex(@"^((0?[1-9])|((1|2)[0-9]))$")]private static partial System.Text.RegularExpressions.Regex MyRegex2();[System.Text.RegularExpressions.GeneratedRegex(@"^((0?[1-9])|((1|2)[0-8]))$")]private static partial System.Text.RegularExpressions.Regex MyRegex3();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/665340.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络_1.6.2 计算机网络体系结构分层的必要性

1.6.2 计算机网络体系结构分层的必要性 一、五层原理体系结构每层各自主要解决什么问题1、物理层2、数据链路层3、网络层4、运输层5、应用层 二、总结三、练习 笔记来源&#xff1a; B站 《深入浅出计算机网络》课程 本节主要介绍实现计算机网络需要解决哪些问题&#xff1f;以…

这种学习单片机的顺序是否合理?

这种学习单片机的顺序是否合理&#xff1f; 在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「单片机的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01…

随着网络的快速发展,网络安全问题也日益凸显,遇到攻击该如何处理,如何抉择合适的防护方案

DexunCloud 经过研究发现当今世界&#xff0c;随着网络的快速发展&#xff0c;网络安全问题也日益凸显。其中&#xff0c;DDoS&#xff08;分布式拒绝服务&#xff09;攻击被认为是网络安全领域里最为严重的威胁之一。毫无疑问&#xff0c;DDoS攻击不仅可以导致网络服务中断&am…

支付宝直连商户处理支付交易投诉管理,支持多商户

大家好&#xff0c;我是小悟 1、问题背景 玩过支付宝生态的&#xff0c;或许就有这种感受&#xff0c;如果收到投诉单&#xff0c;不会通知到手机端&#xff0c;只会在支付宝商家后台-账号中心-安全中心-消费者投诉-支付交易投诉那里显示。那你能一直盯着电脑看吗&#xff1f;…

Flink CEP(基本概念)

Flink CEP 在Flink的学习过程中&#xff0c;我们已经掌握了从基本原理和核心层的DataStream API到底层的处理函数&#xff0c;再到应用层的Table API和SQL的各种手段&#xff0c;可以应对实际应用开发的各种需求。然而&#xff0c;在实际应用中&#xff0c;还有一类更为复…

AI Partition(银灿U盘分区工具)V2.0.0.3

AI Partition(银灿U盘分区工具)V2.0.0.3.zip 复制链接下载吧 https://url20.ctfile.com/f/36743220-1017367709-67f1b9?p2024 (访问密码: 2024) 支持IS903B IS902E IS916 AI Partition(银灿U盘分区量产工具) 这个是银灿官方发布的最新版U盘分区工具&#xff0c;版本号V2.0.0…

翻转二叉树

226. 翻转二叉树 已解答 简单 相关标签 相关企业 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&#xff1a;[4,7,2,9,6,3,1]示例 2&#xff1a; 输入&#xff1a…

从零学习Linux操作系统 第二十五部分 文本处理工具

一、grep命令的基本使用方法及常用参数介绍 grep [全称&#xff1a;Globally search a Regular Expression and Print 全局搜索正则表达式并打印 ] grep 命令格式 grep 匹配条件 处理文件 grep root passwd过滤root关键字grep -i root passwd后略大小写grep -E “<root”…

嵌入式中物联网核心技术有哪些

IoT军事技术 物联网军事技术是一项利用IoT感知技术在军事活动中获取人、装备、作战环境状态的信息特征&#xff0c;从而实现在军事活动中做出智能化决策和控制局势的军事方针。 据悉&#xff0c;早于2012年10月军方联合了社会研究机构合力创建了“军事物联网联合实验室”。 …

C++核心deque容器,stack容器,queue容器,list容器,set容器,pair ,map容器

3.deque容器 1.deque容器的基本概念 Vector容器是单向开口的连续内存空间&#xff0c;deque则是一种双向开口的连续线性空间。所谓的双向开口&#xff0c;意思是可以在头尾两端插入元素&#xff0c;但是在其头部操作效率奇差&#xff0c;无法被接受。 deque容器和vector容器最…

C++类和对象入门(二)

顾得泉&#xff1a;个人主页 个人专栏&#xff1a;《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂&#xff0c;年薪百万&#xff01; 一、类的作用域 类定义了一个新的作用域&#xff0c;类的所有成员都在类的作用域中。在类体外定义成员时&#xff0c;需要…

vue3快速入门

文章目录 1. Vue3简介1.1. 性能的提升1.2.源码的升级1.3. 拥抱TypeScript1.4. 新的特性 2. 创建Vue3工程2.1. 基于 vue-cli 创建2.2. 基于 vite 创建&#xff08;推荐&#xff09;vite介绍创建步骤项目结构安装插件项目结构总结 2.3. 一个简单的效果Person.vueApp.vue 3. Vue3核…

关于爬取所有哔哩哔哩、任意图片、所有音乐、的python脚本语言-Edge浏览器插件 全是干货!

这些都是现成的并且实时更新的&#xff01;从次解放双手&#xff01; 首先有自己的edge浏览器基本上都有并且找到插件选项 1.哔哩哔哩视频下载助手&#xff08;爬取哔哩哔哩视频&#xff09; bilibili哔哩哔哩视频下载助手 - Microsoft Edge Addons 下面是效果&#xff1a; 2.图…

2024年数学建模美赛 A~E 题目解析

2024美赛A题&#xff1a;资源可用性和性别比例 背景 尽管一些动物物种不属于通常的雄性或雌性&#xff0c;大多数物种在出生时要么显著地为雄性&#xff0c;要么为雌性。虽然许多物种在出生时表现出1:1的性别比&#xff0c;但其他物种则偏离了这个均衡的性别比例。这被称为性…

PostgreSQL 也很强大,为何在中国大陆,MySQL 成为主流,PostgreSQL 屈居二线呢?

问题&#xff1a; PostgreSQL 也很强大&#xff0c;为何在中国大陆&#xff0c;MySQL 成为主流&#xff0c;PostgreSQL 屈居二线呢&#xff1f;PostgreSQL 能否替代 MySQL&#xff1f; 当我们讨论为何 MySQL 在中国大陆成为主流而 PostgreSQL 屈居二线时&#xff0c; 我们其实…

高中数学立体几何练习题3

用到的基础知识&#xff1a; 1. 2.

软件测试过程中出现随机性缺陷,大家是如何处理的?

软件测试是确保软件产品的质量、功能和可靠性的关键过程。然而&#xff0c;测试并不总是完美无缺的&#xff0c;在开发和测试阶段可能会出现缺陷。缺陷是错误、缺陷或偏离软件的预期行为或要求。在本文中&#xff0c;我们将探讨软件测试中缺陷的常见类型和原因&#xff0c;以及…

AutoCAD .NET 层次结构介绍

AutoCAD .NET API 提供了一种面向对象的编程接口&#xff0c;通过它可以与AutoCAD进行深度集成和自定义功能开发。以下是基于.NET框架下AutoCAD对象层次结构的基本介绍&#xff1a; Autodesk.AutoCAD.ApplicationServices 命名空间 根对象&#xff0c;代表运行中的AutoCAD应用程…

centos 7 部署若依前后端分离项目

目录 一、新建数据库 二、修改需求配置 1.修改数据库连接 2.修改Redis连接信息 3.文件路径 4.日志存储路径调整 三、编译后端项目 四、编译前端项目 1.上传项目 2.安装依赖 3.构建生产环境 五、项目部署 1.创建目录 2.后端文件上传 3. 前端文件上传 六、服务启…

第二证券:苹果Vision Pro出货在即 固态电池产业化前景渐明

sion Pro即将于2月2日正式在美国商场开始交给&#xff0c;苹果美国官网释出了Vision Pro的详细参数&#xff0c;与发布会介绍根本一致&#xff0c;依靠总计12个摄像头、5种传感器、职业顶尖的单眼4K分辨率Micro-OLED显示屏、M2与R1芯片&#xff0c;完成了当时商场上独一无二的沉…