using System;
using System.Text;
using System.Text.RegularExpressions;
namespace Dachie.Common
{
/// <summary>
/// Common 的摘要说明。
/// </summary>
public class RegexComm
{
//private const string REG_DATE = @"^(\d{2}|\d{4})[\-\/]((0?[1-9])|(1[0-2]))[\-\/]((0?[1-9])|((1|2)[0-9])|30|31)$";
private const string REG_DATE = @"^(\d{2}|\d{4})((0[1-9])|(1[0-2]))((0[1-9])|((1|2)[0-9])|30|31)$";
private const string REG_PHONE = @"^((0[0-9]{2,3}){0,1}([0-9]{7,8}))$";
private const string REG_EMAIL = @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$";
private const string REG_MOBILE = @"(^0{0,1}13[0-9]{9}$)";
private const string REG_IDCARD = @"^([0-9]{14}|[0-9]{17})(x|[0-9]){1}$";
private const string REG_TIME = @"^((([0-1]?[0-9])|(2[0-3]))([\:])([0-5][0-9]))$";
#region 半角验证
/// <summary>
/// 半角验证
/// </summary>
/// <param name="str">验证的字符串</param>
/// <returns></returns>
public static bool IsDBC(string str)
{
UTF8Encoding encoding = new UTF8Encoding();
int byteCount = encoding.GetByteCount(str);
int strLen = str.Length;
if(strLen == byteCount)
{
return true;
}
return false;
}
#endregion
#region 全角验证
/// <summary>
/// 全角验证
/// </summary>
/// <param name="str">验证的字符串</param>
/// <returns></returns>
public static bool IsSBC(string str)
{
UTF8Encoding encoding = new UTF8Encoding();
int byteCount = encoding.GetByteCount(str);
int strLen = str.Length;
if(byteCount == strLen * 3 )
{
return true;
}
return false;
}
#endregion
#region 日期字符串有效性验证
/// <summary>
/// 日期字符串有效性验证
/// </summary>
/// <param name="date">日期字符串</param>
/// <returns>有效:true,否则:false</returns>
public static bool IsValidDate(string date)
{
return Regex.IsMatch(date, RegexComm.REG_DATE);
}
#endregion
#region Email有效性验证
/// <summary>
/// Email有效性验证
/// </summary>
/// <param name="email">Email字符串</param>
/// <returns>有效:true,否则:false</returns>
public static bool IsValidEmail(string email)
{
return Regex.IsMatch(email, RegexComm.REG_EMAIL);
}
#endregion
#region 电话号码有效性验证
/// <summary>
/// 电话号码有效性验证
/// </summary>
/// <param name="phone">电话号码字符串</param>
/// <returns>有效:true,否则:false</returns>
public static bool IsVaildPhone(string phone)
{
return Regex.IsMatch(phone, RegexComm.REG_PHONE);
}
#endregion
#region 手机号码有效性验证
/// <summary>
/// 手机号码有效性验证
/// </summary>
/// <param name="mobile">手机号码字符串</param>
/// <returns>有效:true,否则:false</returns>
public static bool IsValidMobile(string mobile)
{
return Regex.IsMatch(mobile,REG_MOBILE);
}
#endregion
#region 身份证号有效性验证
/// <summary>
/// 身份证号有效性验证
/// </summary>
/// <param name="idCard">身份证号字符串</param>
/// <returns>有效:true,否则:false</returns>
public static bool IsValidIdCard(string idCard)
{
return Regex.IsMatch(idCard, RegexComm.REG_IDCARD);
}
#endregion
#region 日期字符串转换成日期对象
/// <summary>
/// 日期字符串转换成日期对象
/// </summary>
/// <param name="date">日期字符串</param>
/// <returns>日期对象</returns>
public static DateTime CastDateTime(string date)
{
StringBuilder builder = new StringBuilder();
builder.Append(date.Substring(0,4));
builder.Append("-");
builder.Append(date.Substring(4,2));
builder.Append("-");
builder.Append(date.Substring(6,2));
return Convert.ToDateTime(builder.ToString());
}
#endregion
#region 日期对象转化成日期字符串
/// <summary>
/// 日期对象转化成日期字符串
/// </summary>
/// <param name="date">日期对象</param>
/// <returns>日期字符串</returns>
public static string CastDateTime(DateTime date)
{
string strDate = date.ToString("yyyy-MM-dd");
strDate = strDate.Replace("-","");
return strDate;
}
#endregion
#region 时间格式验证
/// <summary>
/// 时间格式验证
/// </summary>
/// <param name="time">时间字符串</param>
/// <returns>正确:true,错误:false</returns>
public static bool IsValidTime(string time)
{
return Regex.IsMatch(time,REG_TIME);
}
#endregion
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)