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#中常用的字符串验证的更多相关文章

  1. java中常用的字符串的截取方法

    java中常用的字符串的截取方法   1.length() 字符串的长度 例:char chars[]={'a','b'.'c'}; String s=new String(chars); int l ...

  2. LoadRunner中常用的字符串操作函数

    LoadRunner中常用的字符串操作函数有:                strcpy(destination_string, source_string);               strc ...

  3. Js中常用的字符串,数组,函数扩展

    由于最近辞职在家,自己的时间相对多一点.所以就根据prototytpeJS的API,结合自己正在看的司徒大神的<javascript框架设计>,整理了下Js中常用一些字符串,数组,函数扩展 ...

  4. php中常用的字符串查找函数strstr()、strpos()实例解释

    string strstr ( string $haystack , mixed $needle [, bool $before_needle = false ] ) 1.$haystack被查找的字 ...

  5. mysql中常用的字符串函数

    写在分割线之前,个人以为,数据库应该具备简单的的数据加工能力.如同食品在吃之前,是要经过很多到工序的,有经过初加工.粗加工.精加工.深加工等.那么mysql也应该并必须担任起数据初加工以及粗加工的责任 ...

  6. PHP中常用的字符串格式化函数总结

    注意:在PHP中提供的字符串函数处理的字符串,大部分都不是在原字符串上修改,而是返回一个格式化后的新字符串. 一.取出空格和字符串填补函数 空格也是一个有效的字符,在字符串中也会占据一个位置.用户在表 ...

  7. C语言中常用的字符串操作函数

    程序开头要声明 #include <string.h> 函数名: stpcpy 功 能: 拷贝一个字符串到另一个 用 法: char *stpcpy(char *destin, char ...

  8. PHP开发中常用的字符串操作函数

    1,拼接字符串 拼接字符串是最常用到的字符串操作之一,在PHP中支持三种方式对字符串进行拼接操作,分别是圆点.分隔符{}操作,还有圆点等号.=来进行操作,圆点等号可以把一个比较长的字符串分解为几行进行 ...

  9. netty系列之:netty中常用的字符串编码解码器

    目录 简介 netty中的字符串编码解码器 不同平台的换行符 字符串编码的实现 总结 简介 字符串是我们程序中最常用到的消息格式,也是最简单的消息格式,但是正因为字符串string太过简单,不能附加更 ...

随机推荐

  1. shell入门-awk-1

    awk对于sed grep的优势在于分段,把分隔符分割成一小段一小段,针对段进行匹配,替换,操作,逻辑判断,比较...等 awk的基本操作 [root@wangshaojun ~]# awk -F ' ...

  2. shell脚本备份系统的方法

    linux自动备份shell(使用全备份,增量备份策略) 在cron里设置,每周日晚12点执行(每周日全备份,其余时间增量备份)#vi backup.sh #!/bin/bash # definewe ...

  3. VIewPage+Fragment

    效果图: 代码 public class NewOrderListFargmentActivity extends BaseActivity implements OnClickListener { ...

  4. 你所必须知道的HTML

    只有在MySQL中可以使用"utf-8"的别名"utf8",但是在其他地方一律使用大写"UTF-8". htm 与 html 的区别  两种 ...

  5. Umbraco安装过程中出现的问题以及调试

    在VS2015中使用NuGet安装完UmbracoCms后,按Ctrl+F5运行程序来完成安装UmbracoCms的过程中,发现一直在安装但是没有反应 估计是出现了错误.所以我到项目所在的文件夹中查找 ...

  6. 以后尽量不用cin、cout啦

    cout输出有问题(对于double,不同OJ处理的结果不一样),cin读入机制较scanf繁琐.慢!!!!!!!!

  7. JWT使用过程中遇到的问题

    1.创建token的盐设置过于简单,出现secret key byte array cannot be null or empty. 异常 解决方法:jwt:config:key:hwy ------ ...

  8. xsp4 命令行配置运行(CLI工具)

    xsp不必单独安装,它会在安装xamarin studio的时候出现在bin目录下,当然xsp是开源的地址:https://github.com/mono/xsp 常规使用方式如下: --root G ...

  9. 探索ElasticSearch(一)

    1.    什么是ElasticSearch: ElasticSearch是基于lucene采用java语言开发的一个服务产品,旨在方便全文检索.分担web服务及数据库服务压力.可以理解为文件系列类型 ...

  10. Vue.js 源码实现

    目录 Vue.js 代码实现 1. 步骤一 2. 步骤二 3.步骤三 Vue.js 工作机制 初始化 编译 响应式 虚拟dom 更新视图 编译 Vue.js 代码实现 检验学习效果的最好方法就是自己造 ...