本文原创版权归 柳永法 所有,转载请标明原创作者,以示尊重!

一转:http://www.cnblogs.com/KissFly/archive/2010/11/23/1885254.html

namespace YongFa365.Validator
{using System;using System.Text.RegularExpressions;/** <summary>/// RegExp Soruce:   http://regexlib.com/DisplayPatterns.aspx/// Author:柳永法 yongfa365 http://www.yongfa365.com/ yongfa365@qq.com/// Intro:验证 网址,IP,邮箱,电话,手机,数字,英文,日期,身份证,邮编,/// 原则上是中国通用,因为各种场合不一样所以有特殊情况肯定要自己再手写,这里只能是提供一些通用的验证,追求太完美是不现实的。/// Version: 1.0/// PutTime: 2008-6-5/// LastModi:2008-6-5/// </summary>/// public class Validator{#region 验证邮箱/** <summary>/// 验证邮箱/// </summary>/// <param name="source"></param>/// <returns></returns>public static bool IsEmail(string source){return Regex.IsMatch(source, @"^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$", RegexOptions.IgnoreCase);}public static bool HasEmail(string source){return Regex.IsMatch(source, @"[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})", RegexOptions.IgnoreCase);}#endregion#region 验证网址/** <summary>/// 验证网址/// </summary>/// <param name="source"></param>/// <returns></returns>public static bool IsUrl(string source){return Regex.IsMatch(source, @"^(((file|gopher|news|nntp|telnet|http|ftp|https|ftps|sftp)://)|(www\.))+(([a-zA-Z0-9\._-]+\.[a-zA-Z]{2,6})|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(/[a-zA-Z0-9\&%_\./-~-]*)?$", RegexOptions.IgnoreCase);}public static bool HasUrl(string source){return Regex.IsMatch(source, @"(((file|gopher|news|nntp|telnet|http|ftp|https|ftps|sftp)://)|(www\.))+(([a-zA-Z0-9\._-]+\.[a-zA-Z]{2,6})|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(/[a-zA-Z0-9\&%_\./-~-]*)?", RegexOptions.IgnoreCase);}#endregion#region 验证日期/** <summary>/// 验证日期/// </summary>/// <param name="source"></param>/// <returns></returns>public static bool IsDateTime(string source){try{DateTime time = Convert.ToDateTime(source);return true;}catch{return false;}}#endregion#region 验证手机号/** <summary>/// 验证手机号/// </summary>/// <param name="source"></param>/// <returns></returns>public static bool IsMobile(string source){return Regex.IsMatch(source, @"^1[35]\d{9}$", RegexOptions.IgnoreCase);}public static bool HasMobile(string source){return Regex.IsMatch(source, @"1[35]\d{9}", RegexOptions.IgnoreCase);}#endregion#region 验证IP/** <summary>/// 验证IP/// </summary>/// <param name="source"></param>/// <returns></returns>public static bool IsIP(string source){return Regex.IsMatch(source, @"^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$", RegexOptions.IgnoreCase);}public static bool HasIP(string source){return Regex.IsMatch(source, @"(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])", RegexOptions.IgnoreCase);}#endregion#region 验证身份证是否有效/** <summary>/// 验证身份证是否有效/// </summary>/// <param name="Id"></param>/// <returns></returns>public static bool IsIDCard(string Id){if (Id.Length == 18){bool check = IsIDCard18(Id);return check;}else if (Id.Length == 15){bool check = IsIDCard15(Id);return check;}else{return false;}}public static bool IsIDCard18(string Id){long n = 0;if (long.TryParse(Id.Remove(17), out n) == false || n < Math.Pow(10, 16) || long.TryParse(Id.Replace('x', '0').Replace('X', '0'), out n) == false){return false;//数字验证}string address = "11x22x35x44x53x12x23x36x45x54x13x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82x91";if (address.IndexOf(Id.Remove(2)) == -1){return false;//省份验证}string birth = Id.Substring(6, 8).Insert(6, "-").Insert(4, "-");DateTime time = new DateTime();if (DateTime.TryParse(birth, out time) == false){return false;//生日验证}string[] arrVarifyCode = ("1,0,x,9,8,7,6,5,4,3,2").Split(',');string[] Wi = ("7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2").Split(',');char[] Ai = Id.Remove(17).ToCharArray();int sum = 0;for (int i = 0; i < 17; i++){sum += int.Parse(Wi[i]) * int.Parse(Ai[i].ToString());}int y = -1;Math.DivRem(sum, 11, out y);if (arrVarifyCode[y] != Id.Substring(17, 1).ToLower()){return false;//校验码验证}return true;//符合GB11643-1999标准}public static bool IsIDCard15(string Id){long n = 0;if (long.TryParse(Id, out n) == false || n < Math.Pow(10, 14)){return false;//数字验证}string address = "11x22x35x44x53x12x23x36x45x54x13x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82x91";if (address.IndexOf(Id.Remove(2)) == -1){return false;//省份验证}string birth = Id.Substring(6, 6).Insert(4, "-").Insert(2, "-");DateTime time = new DateTime();if (DateTime.TryParse(birth, out time) == false){return false;//生日验证}return true;//符合15位身份证标准}#endregion#region 是不是Int型的/** <summary>/// 是不是Int型的/// </summary>/// <param name="source"></param>/// <returns></returns>public static bool IsInt(string source){Regex regex = new Regex(@"^(-){0,1}\d+$");if (regex.Match(source).Success){if ((long.Parse(source) > 0x7fffffffL) || (long.Parse(source) < -2147483648L)){return false;}return true;}return false;}#endregion#region 看字符串的长度是不是在限定数之间 一个中文为两个字符/** <summary>/// 看字符串的长度是不是在限定数之间 一个中文为两个字符/// </summary>/// <param name="source">字符串</param>/// <param name="begin">大于等于</param>/// <param name="end">小于等于</param>/// <returns></returns>public static bool IsLengthStr(string source, int begin, int end){int length = Regex.Replace(source, @"[^\x00-\xff]", "OK").Length;if ((length <= begin) && (length >= end)){return false;}return true;}#endregion#region 是不是中国电话,格式010-85849685/** <summary>/// 是不是中国电话,格式010-85849685/// </summary>/// <param name="source"></param>/// <returns></returns>public static bool IsTel(string source){return Regex.IsMatch(source, @"^\d{3,4}-?\d{6,8}$", RegexOptions.IgnoreCase);}#endregion#region 邮政编码 6个数字/** <summary>/// 邮政编码 6个数字/// </summary>/// <param name="source"></param>/// <returns></returns>public static bool IsPostCode(string source){return Regex.IsMatch(source, @"^\d{6}$", RegexOptions.IgnoreCase);}#endregion#region 中文/** <summary>/// 中文/// </summary>/// <param name="source"></param>/// <returns></returns>public static bool IsChinese(string source){return Regex.IsMatch(source, @"^[\u4e00-\u9fa5]+$", RegexOptions.IgnoreCase);}public static bool hasChinese(string source){return Regex.IsMatch(source, @"[\u4e00-\u9fa5]+", RegexOptions.IgnoreCase);}#endregion#region 验证是不是正常字符 字母,数字,下划线的组合/** <summary>/// 验证是不是正常字符 字母,数字,下划线的组合/// </summary>/// <param name="source"></param>/// <returns></returns>public static bool IsNormalChar(string source){return Regex.IsMatch(source, @"[\w\d_]+", RegexOptions.IgnoreCase);}#endregion}
}

C#通用验证类:邮箱,电话,手机,数字,英文,日期,身份证,邮编,网址,IP相关推荐

  1. js常见正则验证:邮箱 手机号 电话号码 账号 去掉空格 身份证

    常见正则验证:邮箱 手机号 电话号码 账号 这个博主没什么文采,废话不少说,直接来正文,往下看啊. 检测:电话号码 /* 检测:电话号码验证规则:区号+号码如:01022446688 010-4567 ...

  2. 正则表达式-匹配中英文、字母和数字,手机号,电话号码, 身份证,邮编

    在做项目的过程中,使用正则表达式来匹配一段文本中的特定种类字符,是比较常用的一种方式,下面是对常用的正则匹配做了一个归纳整理.1.匹配中文:[\u4e00-\u9fa5]2.英文字母:[a-zA-Z] ...

  3. 身份证号合法性验证、电话手机验证、邮箱验证、银行卡验证、车牌验证

    js验证: 身份证号合法性验证 电话手机验证 邮箱验证 银行卡验证 车牌验证 //身份证号合法性验证 //支持15位和18位身份证号 //支持地址编码.出生日期.校验位验证 function Iden ...

  4. layui自带验证体系:手机号验证、邮箱验证、必填项非空验证、数字验证(含代码、案例)

    layui自带验证体系:手机号验证.邮箱验证.必填项非空验证.数字验证(含代码.案例) 案例 · 截图: 实例代码: <!DOCTYPE html> <html> <he ...

  5. 信息脱敏---字符、姓名、邮箱、手机、固定电话,银行卡号、地址、身份证号脱敏处理

    信息脱敏:对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护. 以下工具类是对字符.姓名.邮箱.手机.固定电话,银行卡号.地址.公司开户银行联号.身份证号进行脱敏处理. 1.脱敏工具 ...

  6. C#验证:正则表达式 验证类和界面处理(手机号码,邮箱,IP地址)

    使用步骤: 1.创建验证类 2.界面调用验证类中的方法进行验证 实例代码演示如下 1.创建验证类 using System; using System.Collections.Generic; usi ...

  7. vue3.2+ 滑动验证组件,pc/手机通用,即插即用

    vue3.2+ 滑动验证组件,pc/手机通用,即插即用 一.前言 二.成果展示 三.组件使用 四.vue3.2+ 滑动验证组件 源码 五.最后,点个赞 一.前言 vue已经更新到3.2+,使用了scr ...

  8. 验证码短信接口可以广泛应用在网站会员手机验证、APP应用手机验证、订单通知、物流提醒等触发类短信应用。

    应用范围 验证码短信接口可以广泛应用在网站会员手机验证.APP应用手机验证.订单通知.物流提醒等触发类短信应用. 手机短信验证码技术实现 1.用户填写自己的手机号码,点击"获取验证码&quo ...

  9. VUE.JS邮箱、手机、车牌自定义验证规则

    VUE JS邮箱与手机验证规则 // 自定义邮箱规则var checkEmail = (rule, value, callback) => {const regEmail = /^\w+@\w+ ...

最新文章

  1. Logstash为什么那么慢?—— json序列化
  2. 企业网络推广浅析外包企业网络推广如何有效布局关键词优化?
  3. java 隐藏标题栏_两种方法一句代码隐藏Activity的标题栏
  4. 青少年蓝桥杯_2020_steam考试_中级组_第一题
  5. spark 序列化错误 集群提交时_Spark统一内存管理机制
  6. 2021年7月文章精选
  7. 【转】QDockWidget 停靠窗口和工具栏
  8. NFS服务启动:rpc.nfsd: writing fd to kernel failed: errno 111 (Connection refused)
  9. [Android Pro] 内容提供者ContentProvider的基本使用
  10. 关于IMX6Dl 芯片使用硬编解码的问题记录
  11. 【智慧楼宇项目】nodemcu(lua)控制HLW8032电计量模块
  12. c语言程序设计安卓,C语言编程学习app下载-C语言编程学习 安卓版v2.1.2-PC6安卓网...
  13. 倾斜摄影三维模型五种常见格式
  14. 我的回忆和有趣的故事 by李维(台湾)
  15. 为什么俺推荐Python「1」:作为脚本语言的Python
  16. 宁向东管理课:自我力
  17. defineEmit
  18. 嵌入式Linux学习笔记之Linux内核裁剪
  19. [AssistantTool]_7_添加生成测试图的功能
  20. matlab 215卷积码,基于matlab的卷积码的分析与应用

热门文章

  1. java 流已被关闭_mybatis oracle java.sql.SQLException: 流已被关闭问题
  2. 洛谷——P1909 [NOIP2016 普及组] 买铅笔
  3. 201612-1-中间数
  4. java同步队列_Java 中队列同步器 AQS(AbstractQueuedSynchronizer)实现原理
  5. css3中定义required,focus,valid和invalid样式
  6. 成考期末计算机组成原理,2020年10月自考02318计算机组成原理真题及答案
  7. java判断一个月间隔_如何检查间隔列表(Joda-Time)是否完全涵盖Java中的一个月
  8. select top语句 mysql_SQL SELECT TOP 语句
  9. mysql热备工具innobackupex参数详解
  10. HDU4026 Unlock the Cell Phone [状态压缩DP]