C#中常用的字符串验证
using System;
using System.Text.RegularExpressions; namespace Util
{
public static class @string
{
#region 验证字符串是否符合正则表达式MachRegex
/// <summary>
/// 验证字符串是否符合正则表达式MachRegex
/// </summary>
/// <param name="regex">正则表达式</param>
/// <param name="str">字符串</param>
/// <returns>是否符合 true 或者 false</returns>
private static bool MachRegex(string regex, string str)
{
Regex reg = new Regex(regex);
return reg.IsMatch(str);
}
#endregion #region 验证URL
/// <summary>
/// 验证URL
/// </summary>
/// <param name="str">要验证的字符串</param>
/// <returns>是否符合 true 或者 false</returns>
public static bool IsUrl(this string str)
{
return MachRegex(@"^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$", str);
}
#endregion #region 验证IP地址
/// <summary>
/// 验证IP地址
/// </summary>
/// <param name="str">要验证的字符串</param>
/// <returns>是否符合 true 或者 false</returns>
public static bool IsIpAddress(this string str)
{
return MachRegex(@"^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$", str);
}
#endregion #region 验证邮编
/// <summary>
/// 验证邮编
/// </summary>
/// <param name="str">要验证的字符串</param>
/// <returns>是否符合 true 或者 false</returns>
public static bool IsZipCode(this string str)
{
return MachRegex(@"^[0-9]{6}$", str);
}
#endregion #region 验证是否汉字
/// <summary>
/// 验证是否汉字
/// </summary>
/// <param name="str">要验证的字符串</param>
/// <returns>是否符合 true 或者 false</returns>
public static bool IsChineseChar(this string str)
{
return MachRegex(@"^[\u4e00-\u9fa5]{0,}$", str);
}
#endregion #region 验证是否Email地址
/// <summary>
/// 验证是否Email地址
/// </summary>
/// <param name="str">要验证的字符串</param>
/// <returns>是否符合 true 或者 false</returns>
public static bool IsEmail(this string str)
{
return MachRegex(@"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$", str);
}
#endregion #region 验证是否电话号码
/// <summary>
/// 验证是否电话号码
/// </summary>
/// <param name="str">要验证的字符串</param>
/// <returns>是否符合 true 或者 false</returns>
public static bool IsTelNumber(this string str)
{
return MachRegex(@"^((\d{3,4}-)|\d{3.4}-)?\d{7,8}$", str);
}
#endregion #region 是否是手机号码
/// <summary>
/// 是否是手机号码
/// </summary>
/// <param name="val"></param>
public static bool IsMobile(this string val)
{
return Regex.IsMatch(val, @"^1[358]\d{9}$", RegexOptions.IgnoreCase);
}
#endregion #region 验证用户密码。正确格式为:以字母开头,长度在6~18之间,只能包含字符、数字和下划线。
/// <summary>
/// 验证用户密码。正确格式为:以字母开头,长度在6~18之间,只能包含字符、数字和下划线。
/// </summary>
/// <param name="str">要验证的字符串</param>
/// <returns>是否符合 true 或者 false</returns>
public static bool IsStandardPassword(this string str)
{
return MachRegex(@"^[a-zA-Z]\w{5,17}$", str);
}
#endregion #region 身份证有效性验证
/// <summary>
/// 身份证验证
/// </summary>
/// <param name="Id">身份证号</param>
/// <returns></returns>
public static bool IsIDCard(this string Id)
{
if (Id.Length == )
{
bool check = CheckIDCard18(Id);
return check;
}
else if (Id.Length == )
{
bool check = CheckIDCard15(Id);
return check;
}
else
{
return false;
}
} /// <summary>
/// 18位身份证验证
/// </summary>
/// <param name="Id">身份证号</param>
/// <returns></returns>
private static bool CheckIDCard18(string Id)
{
long n = ;
if (long.TryParse(Id.Remove(), out n) == false || n < Math.Pow(, ) || long.TryParse(Id.Replace('x', '').Replace('X', ''), out n) == false)
{
return false;//数字验证
}
string address = "11x22x35x44x53x12x23x36x45x54x13x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82x91";
if (address.IndexOf(Id.Remove()) == -)
{
return false;//省份验证
} string birth = Id.Substring(, ).Insert(, "-").Insert(, "-");
System.DateTime time = new System.DateTime();
if (System.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().ToCharArray(); int sum = ;
for (int i = ; i < ; i++)
{
sum += int.Parse(Wi[i]) * int.Parse(Ai[i].ToString());
} int y = -; Math.DivRem(sum, , out y); if (arrVarifyCode[y] != Id.Substring(, ).ToLower())
{
return false;//校验码验证
}
return true;//符合GB11643-1999标准
} /// <summary>
/// 15位身份证验证
/// </summary>
/// <param name="Id">身份证号</param>
/// <returns></returns>
private static bool CheckIDCard15(string Id)
{
long n = ;
if (long.TryParse(Id, out n) == false || n < Math.Pow(, ))
{
return false;//数字验证
} string address = "11x22x35x44x53x12x23x36x45x54x13x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82x91";
if (address.IndexOf(Id.Remove()) == -)
{
return false;//省份验证
} string birth = Id.Substring(, ).Insert(, "-").Insert(, "-");
System.DateTime time = new System.DateTime();
if (System.DateTime.TryParse(birth, out time) == false)
{
return false;//生日验证
}
return true;//符合15位身份证标准
}
#endregion #region 验证是否合法域名
/// <summary>
/// 验证是否合法域名
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public static bool IsHost(this string url)
{
string pattern = @"^[0-9a-zA-Z-]*\.(com\.tw|com\.cn|com\.hk|net\.cn|org\.cn|gov\.cn|ac\.cn|bj\.cn|sh\.cn|tj\.cn|cq\.cn|he\.cn|sx\.cn|nm\.cn|ln\.cn|jl\.cn|hl\.cn|js\.cn|zj\.cn|ah\.cn|fj\.cn|jx\.cn|sd\.cn|ha\.cn|hb\.cn|hn\.cn|gd\.cn|gx\.cn|hi\.cn|sc\.cn|gz\.cn|yn\.cn|xz\.cn|sn\.cn|gs\.cn|qh\.cn|nx\.cn|xj\.cn|tw\.cn|hk\.cn|mo\.cn|com|net|org|biz|info|cn|mobi|name|sh|ac|io|tw|hk|ws|travel|us|tm|cc|tv|la|in|asia|me|net\.ru)$";
return Regex.IsMatch(url, pattern, RegexOptions.IgnoreCase);
}
#endregion
}
}
C#中常用的字符串验证的更多相关文章
- java中常用的字符串的截取方法
java中常用的字符串的截取方法 1.length() 字符串的长度 例:char chars[]={'a','b'.'c'}; String s=new String(chars); int l ...
- LoadRunner中常用的字符串操作函数
LoadRunner中常用的字符串操作函数有: strcpy(destination_string, source_string); strc ...
- Js中常用的字符串,数组,函数扩展
由于最近辞职在家,自己的时间相对多一点.所以就根据prototytpeJS的API,结合自己正在看的司徒大神的<javascript框架设计>,整理了下Js中常用一些字符串,数组,函数扩展 ...
- php中常用的字符串查找函数strstr()、strpos()实例解释
string strstr ( string $haystack , mixed $needle [, bool $before_needle = false ] ) 1.$haystack被查找的字 ...
- mysql中常用的字符串函数
写在分割线之前,个人以为,数据库应该具备简单的的数据加工能力.如同食品在吃之前,是要经过很多到工序的,有经过初加工.粗加工.精加工.深加工等.那么mysql也应该并必须担任起数据初加工以及粗加工的责任 ...
- PHP中常用的字符串格式化函数总结
注意:在PHP中提供的字符串函数处理的字符串,大部分都不是在原字符串上修改,而是返回一个格式化后的新字符串. 一.取出空格和字符串填补函数 空格也是一个有效的字符,在字符串中也会占据一个位置.用户在表 ...
- C语言中常用的字符串操作函数
程序开头要声明 #include <string.h> 函数名: stpcpy 功 能: 拷贝一个字符串到另一个 用 法: char *stpcpy(char *destin, char ...
- PHP开发中常用的字符串操作函数
1,拼接字符串 拼接字符串是最常用到的字符串操作之一,在PHP中支持三种方式对字符串进行拼接操作,分别是圆点.分隔符{}操作,还有圆点等号.=来进行操作,圆点等号可以把一个比较长的字符串分解为几行进行 ...
- netty系列之:netty中常用的字符串编码解码器
目录 简介 netty中的字符串编码解码器 不同平台的换行符 字符串编码的实现 总结 简介 字符串是我们程序中最常用到的消息格式,也是最简单的消息格式,但是正因为字符串string太过简单,不能附加更 ...
随机推荐
- JS判断提交表单不能为空 等的验证
转自:https://blog.csdn.net/qiu512300471/article/details/23259811 <script type="text/javascript ...
- 使用struts2进行文件下载以及下载权限控制的例子
本测试有两个模块,一个是文件上上传,一个是文件下载,文件下载的时候会检查是否足有权限,如果没有,就会转发到登录页面,如果有权限,就会直接启动下载程序,给浏览器一个输出流. 下面直接上我的代码: 登录表 ...
- javaScript笔记01
所谓勇气就是明知前方的路途充满了荆棘险阻,但还是义无反顾的的走下去. 1 Javasrcipt定义的三种方式 ·1 head中的script脚本 <!DOCTYPE html> <h ...
- redis GEO地理位置命令介绍
GEOADD keylongitude latitude member [longitude latitude member ...] Available since 3.2.0. Time comp ...
- Learning Python 010 函数 1
Python 函数 1 调用函数 举个例子 多于Python内部的函数,你可以在Python的交互式终端中使用help()函数来查看函数的使用方法.比如:abs()函数,如果你不知道如何使用它,你可以 ...
- (转自精通Python设计模式)Python设计模式之创建型模式——2.建造者模式
建造者模式将一个复杂对象的构造过程与其表现分离,这样,同一个构造过程可用于创建多个不同的表现. 我们来看个实际的例子,假设我们想要创建一个HMTL页面生成器,HTML页面的基本结构(构造组件)通常是一 ...
- Spring入门第二十九课
事务的隔离级别,回滚,只读,过期 当同一个应用程序或者不同应用程序中的多个事务在同一个数据集上并发执行时,可能会出现许多意外的问题. 并发事务所导致的问题可以分为下面三种类型: -脏读 -不可重复读 ...
- RFC 2119中几个关键字的翻译
RFC2119定义了规范文档中,英文要求的关键动词,但中文中还没有明确的词,我的建议如下: requirement类,表示没有例外地遵守或一定出现的情况, MUST.MUST NOT.必须,必须不 S ...
- Sharding-JDBC 使用入门和基本配置
一.什么是Sharding-JDBC Sharding-JDBC定位为轻量级Java框架,在Java的JDBC层提供的额外服务.它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理 ...
- mysql的性能优化总结
经验是从别人那里拿来的,不想直接复制黏贴,想亲自总结下,巴拉巴拉.........进入正题吧 一.为查询加入缓存 1.检查数据库是否开启缓存:show variables like '%query_c ...