C# 校验帮助类正则表达式
发布时间:2020-05-22 22:11:16 所属栏目:程序设计 来源:互联网
导读:一、简介很多时候我们都需要用到一些验证的方法,有时候需要用正则表达式校验数据时,往往需要到网上找很久,结果找到的还不是很符合自己想要的。所以我把自己整理的校验帮助类分享处理,在这里分享一下,给自己留了
一、简介 很多时候我们都需要用到一些验证的方法,有时候需要用正则表达式校验数据时,往往需要到网上找很久,结果找到的还不是很符合自己想要的。所以我把自己整理的校验帮助类分享处理,在这里分享一下,给自己留了个底,也给各位需要的朋友们做个参考 二、校验类片段 2.1 邮箱验证 #region IsEmail(是否邮箱) /// <summary> /// 是否邮箱 /// </summary> /// <param name="value">邮箱地址</param> /// <param name="isRestrict">是否按严格模式验证</param> /// <returns></returns> public static bool IsEmail(string value,bool isRestrict=false) { if (value.IsEmpty()) { return false; } string pattern = isRestrict ? @"^(?("")("".+?""@)|(([0-9a-zA-Z]((.(?!.))|[-!#$%&'*+/=?^`{}|~w])*)(?<=[0-9a-zA-Z])@))(?([)([(d{1,3}.){3}d{1,3}])|(([0-9a-zA-Z][-w]*[0-9a-zA-Z].)+[a-zA-Z]{2,6}))$" : @"^[w-]+(.[w-]+)*@[w-]+(.[w-]+)+$"; return value.IsMatch(pattern,RegexOptions.IgnoreCase); } /// <summary> /// 是否存在邮箱 /// </summary> /// <param name="value">值</param> /// <param name="isRestrict">是否按严格模式验证</param> /// <returns></returns> public static bool HasEmail(string value,bool isRestrict = false) { if (value.IsEmpty()) { return false; } string pattern = isRestrict ? @"^(?("")("".+?""@)|(([0-9a-zA-Z]((.(?!.))|[-!#$%&'*+/=?^`{}|~w])*)(?<=[0-9a-zA-Z])@))(?([)([(d{1,RegexOptions.IgnoreCase); } 2.2 手机号码验证 #region IsPhoneNumber(是否合法的手机号码) /// <summary> /// 是否合法的手机号码 /// </summary> /// <param name="value">手机号码</param> /// <returns></returns> public static bool IsPhoneNumber(string value) { if (value.IsEmpty()) { return false; } return value.IsMatch(@"^(0|86|17951)?(13[0-9]|15[012356789]|18[0-9]|14[57]|17[678])[0-9]{8}$"); } #endregion #region IsMobileNumber(是否手机号码) /// <summary> /// 是否手机号码 /// </summary> /// <param name="value">手机号码</param> /// <param name="isRestrict">是否按严格模式验证</param> /// <returns></returns> public static bool IsMobileNumberSimple(string value,bool isRestrict = false) { if (value.IsEmpty()) { return false; } string pattern=isRestrict ? @"^[1][3-8]d{9}$" : @"^[1]d{10}$"; return value.IsMatch(pattern); } /// <summary> /// 是否手机号码 /// </summary> /// <param name="value">手机号码</param> /// <returns></returns> public static bool IsMobileNumber(string value) { if (value.IsEmpty()) { return false; } value = value.Trim().Replace("^","").Replace("$",""); /** * 手机号码: * 13[0-9],14[5,7],15[0,1,2,3,5,6,7,8,9],17[6,8],18[0-9],170[0-9] * 移动号段: 134,135,136,137,138,139,150,151,152,157,158,159,182,183,184,187,188,147,178,1705 * 联通号段: 130,131,132,155,156,185,186,145,176,1709 * 电信号段: 133,153,180,181,189,177,1700 */ return value.IsMatch(@"^1(3[0-9]|4[57]|5[0-35-9]|8[0-9]|70)d{8}$"); } /// <summary> /// 是否存在手机号码 /// </summary> /// <param name="value">值</param> /// <param name="isRestrict">是否按严格模式验证</param> /// <returns></returns> public static bool HasMobileNumberSimple(string value,bool isRestrict = false) { if (value.IsEmpty()) { return false; } string pattern = isRestrict ? @"[1][3-8]d{9}" : @"[1]d{10}"; return value.IsMatch(pattern); } #endregion #region IsChinaMobilePhone(是否中国移动号码) /// <summary> /// 是否中国移动号码 /// </summary> /// <param name="value">手机号码</param> /// <returns></returns> public static bool IsChinaMobilePhone(string value) { if (value.IsEmpty()) { return false; } /** * 中国移动:China Mobile * 134,1705 */ return value.IsMatch(@"(^1(3[4-9]|4[7]|5[0-27-9]|7[8]|8[2-478])d{8}$)|(^1705d{7}$)"); } #endregion #region IsChinaUnicomPhone(是否中国联通号码) /// <summary> /// 是否中国联通号码 /// </summary> /// <param name="value">手机号码</param> /// <returns></returns> public static bool IsChinaUnicomPhone(string value) { if (value.IsEmpty()) { return false; } /** * 中国联通:China Unicom * 130,1709 */ return value.IsMatch(@"(^1(3[0-2]|4[5]|5[56]|7[6]|8[56])d{8}$)|(^1709d{7}$)"); } #endregion #region IsChinaTelecomPhone(是否中国电信号码) /// <summary> /// 是否中国电信号码 /// </summary> /// <param name="value">手机号码</param> /// <returns></returns> public static bool IsChinaTelecomPhone(string value) { if (value.IsEmpty()) { return false; } /** * 中国电信:China Telecom * 133,1700 */ return value.IsMatch(@"(^1(33|53|77|8[019])d{8}$)|(^1700d{7}$)"); } 2.3 身份证验证 #region IsIdCard(是否身份证号码) /// <summary> /// 是否身份证号码 /// </summary> /// <param name="value">身份证</param> /// <returns></returns> public static bool IsIdCard(string value) { if (value.IsEmpty()) { return false; } if (value.Length == 15) { return value.IsMatch(@"^[1-9]d{7}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3}$"); } return value.Length == 0x12 && value.IsMatch(@"^[1-9]d{5}[1-9]d{3}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])((d{4})|d{3}[Xx])$",RegexOptions.IgnoreCase); } 2.4 Base64编码验证 #region IsBase64String(是否Base64编码) /// <summary> /// 是否Base64编码 /// </summary> /// <param name="value">Base64字符串</param> /// <returns></returns> public static bool IsBase64String(string value) { return value.IsMatch(@"[A-Za-z0-9+/=]"); } 2.5 时间验证 #region IsDate(是否日期) /// <summary> /// 是否日期 /// </summary> /// <param name="value">日期字符串</param> /// <param name="isRegex">是否正则验证</param> /// <returns></returns> public static bool IsDate(string value,bool isRegex=false) { if (value.IsEmpty()) { return false; } if (isRegex) { //考虑到4年一度的366天,还有特殊的2月的日期 return value.IsMatch( @"^((((1[6-9]|[2-9]d)d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]d|3[01]))|(((1[6-9]|[2-9]d)d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]d|30))|(((1[6-9]|[2-9]d)d{2})-0?2-(0?[1-9]|1d|2[0-8]))|(((1[6-9]|[2-9]d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?d):[0-5]?d:[0-5]?d$"); } DateTime minValue; return DateTime.TryParse(value,out minValue); } /// <summary> /// 是否日期 /// </summary> /// <param name="value">日期字符串</param> /// <param name="format">格式化字符串</param> /// <returns></returns> public static bool IsDate(string value,string format) { return IsDate(value,format,null,DateTimeStyles.None); } /// <summary> /// 是否日期 /// </summary> /// <param name="value">日期字符串</param> /// <param name="format">格式化字符串</param> /// <param name="provider">格式化提供者</param> /// <param name="styles">日期格式</param> /// <returns></returns> public static bool IsDate(string value,string format,IFormatProvider provider,DateTimeStyles styles) { if (value.IsEmpty()) { return false; } DateTime minValue; return DateTime.TryParseExact(value,provider,styles,out minValue); } #endregion #region IsDateTime(是否有效时间) /// <summary> /// 是否大于最小时间 /// </summary> /// <param name="value">时间</param> /// <param name="min">最小时间</param> /// <returns></returns> public static bool IsDateTimeMin(string value,DateTime min) { if (value.IsEmpty()) { return false; } DateTime dateTime; if (DateTime.TryParse(value,out dateTime)) { if (DateTime.Compare(dateTime,min) >= 0) { return true; } } return false; } /// <summary> /// 是否小于最大时间 /// </summary> /// <param name="value">时间</param> /// <param name="max">最大时间</param> /// <returns></returns> public static bool IsDateTimeMax(string value,DateTime max) { if (value.IsEmpty()) { return false; } DateTime dateTime; if (DateTime.TryParse(value,out dateTime)) { if (DateTime.Compare(max,dateTime) >= 0) { return true; } } return false; } (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |