c#常用正则表达式

public class RegexUtil
{private RegexUtil() { }private static RegexUtil instance = null;/// <summary>/// 静态实例化单体模式/// 保证应用程序操作某一全局对象,让其保持一致而产生的对象/// </summary>/// <returns></returns>public static RegexUtil GetInstance(){if (RegexUtil.instance == null){RegexUtil.instance = new RegexUtil();}return RegexUtil.instance;}/// <summary>/// 判断输入的字符串只包含汉字/// </summary>/// <param name="input"></param>/// <returns></returns>public static bool IsChineseCh(string input){return IsMatch(@"^[\u4e00-\u9fa5]+$", input);}/// <summary>/// 匹配3位或4位区号的电话号码,其中区号可以用小括号括起来,/// 也可以不用,区号与本地号间可以用连字号或空格间隔,/// 也可以没有间隔/// \(0\d{2}\)[- ]?\d{8}|0\d{2}[- ]?\d{8}|\(0\d{3}\)[- ]?\d{7}|0\d{3}[- ]?\d{7}/// </summary>/// <param name="input"></param>/// <returns></returns>public static bool IsPhone(string input){string pattern = "^\\(0\\d{2}\\)[- ]?\\d{8}$|^0\\d{2}[- ]?\\d{8}$|^\\(0\\d{3}\\)[- ]?\\d{7}$|^0\\d{3}[- ]?\\d{7}$";return IsMatch(pattern, input);            }/// <summary>/// 判断输入的字符串是否是一个合法的手机号/// </summary>/// <param name="input"></param>/// <returns></returns>public static bool IsMobilePhone(string input){return IsMatch(@"^13\\d{9}$", input);}/// <summary>/// 判断输入的字符串只包含数字/// 可以匹配整数和浮点数/// ^-?\d+$|^(-?\d+)(\.\d+)?$/// </summary>/// <param name="input"></param>/// <returns></returns>public static bool IsNumber(string input){string pattern = "^-?\\d+$|^(-?\\d+)(\\.\\d+)?$";return IsMatch(pattern, input);            }/// <summary>/// 匹配非负整数/// </summary>/// <param name="input"></param>/// <returns></returns>public static bool IsNotNagtive(string input){return IsMatch(@"^\d+$", input);}/// <summary>/// 匹配正整数/// </summary>/// <param name="input"></param>/// <returns></returns>public static bool IsUint(string input){return IsMatch(@"^[0-9]*[1-9][0-9]*$", input);            }/// <summary>/// 判断输入的字符串字包含英文字母/// </summary>/// <param name="input"></param>/// <returns></returns>public static bool IsEnglisCh(string input){return IsMatch(@"^[A-Za-z]+$", input);            }/// <summary>/// 判断输入的字符串是否是一个合法的Email地址/// </summary>/// <param name="input"></param>/// <returns></returns>public static bool IsEmail(string input){string pattern = @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$";return IsMatch(pattern, input);            }/// <summary>/// 判断输入的字符串是否只包含数字和英文字母/// </summary>/// <param name="input"></param>/// <returns></returns>public static bool IsNumAndEnCh(string input){return IsMatch(@"^[A-Za-z0-9]+$", input);}/// <summary>/// 判断输入的字符串是否是一个超链接/// </summary>/// <param name="input"></param>/// <returns></returns>public static bool IsURL(string input){string pattern = @"^[a-zA-Z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$";return IsMatch(pattern, input);            }/// <summary>/// 判断输入的字符串是否是表示一个IP地址/// </summary>/// <param name="input">被比较的字符串</param>/// <returns>是IP地址则为True</returns>public static bool IsIPv4(string input){string[] IPs = input.Split('.');for (int i = 0; i < IPs.Length; i++){if (!IsMatch(@"^\d+$",IPs[i])){return false;}if (Convert.ToUInt16(IPs[i]) > 255){return false;}}return true;}/// <summary>/// 判断输入的字符串是否是合法的IPV6 地址/// </summary>/// <param name="input"></param>/// <returns></returns>public static bool IsIPV6(string input){string pattern = "";string temp = input;string[] strs = temp.Split(':');if (strs.Length > 8){return false;}int count = RegexUtil.GetStringCount(input, "::");if (count > 1){return false;}else if (count == 0){pattern = @"^([\da-f]{1,4}:){7}[\da-f]{1,4}$";return IsMatch(pattern, input);}else{pattern = @"^([\da-f]{1,4}:){0,5}::([\da-f]{1,4}:){0,5}[\da-f]{1,4}$";return IsMatch(pattern, input);}}#region 正则的通用方法/// <summary>/// 计算字符串的字符长度,一个汉字字符将被计算为两个字符/// </summary>/// <param name="input">需要计算的字符串</param>/// <returns>返回字符串的长度</returns>public static int GetCount(string input){return Regex.Replace(input, @"[\u4e00-\u9fa5/g]", "aa").Length;}/// <summary>/// 调用Regex中IsMatch函数实现一般的正则表达式匹配/// </summary>/// <param name="pattern">要匹配的正则表达式模式。</param>/// <param name="input">要搜索匹配项的字符串</param>/// <returns>如果正则表达式找到匹配项,则为 true;否则,为 false。</returns>public static bool IsMatch(string pattern, string input){if (input == null || input == "") return false;Regex regex = new Regex(pattern);return regex.IsMatch(input);}/// <summary>/// 从输入字符串中的第一个字符开始,用替换字符串替换指定的正则表达式模式的所有匹配项。/// </summary>/// <param name="pattern">模式字符串</param>/// <param name="input">输入字符串</param>/// <param name="replacement">用于替换的字符串</param>/// <returns>返回被替换后的结果</returns>public static string Replace(string pattern, string input, string replacement){Regex regex = new Regex(pattern);return regex.Replace(input, replacement);}/// <summary>/// 在由正则表达式模式定义的位置拆分输入字符串。/// </summary>/// <param name="pattern">模式字符串</param>/// <param name="input">输入字符串</param>/// <returns></returns>public static string[] Split(string pattern, string input){Regex regex = new Regex(pattern);return regex.Split(input);}/* ******************************************************************** 1、通过“:”来分割字符串看得到的字符串数组长度是否小于等于8* 2、判断输入的IPV6字符串中是否有“::”。* 3、如果没有“::”采用 ^([\da-f]{1,4}:){7}[\da-f]{1,4}$ 来判断* 4、如果有“::” ,判断"::"是否止出现一次* 5、如果出现一次以上 返回false* 6、^([\da-f]{1,4}:){0,5}::([\da-f]{1,4}:){0,5}[\da-f]{1,4}$* ******************************************************************//// <summary>/// 判断字符串compare 在 input字符串中出现的次数/// </summary>/// <param name="input">源字符串</param>/// <param name="compare">用于比较的字符串</param>/// <returns>字符串compare 在 input字符串中出现的次数</returns>private static int GetStringCount(string input, string compare){int index = input.IndexOf(compare);if (index != -1){return 1 + GetStringCount(input.Substring(index + compare.Length), compare);}else{return 0;}}/// <summary>/// 根据结构体RegularFormula,返回具体正则表达式/// </summary>/// <param name="RegulatFormula"></param>/// <returns></returns>private static string GetRegularFormula(string RegulatFormula){string str = "";if (RegulatFormula.ToUpper().IndexOf("RegularFormula".ToUpper()) > -1){RegularFormula formula = new RegularFormula();Type type = typeof(RegularFormula);foreach (System.Reflection.FieldInfo info in type.GetFields()){if (("RegularFormula." + info.Name).ToUpper() == RegulatFormula.ToUpper()){str = info.GetValue(formula).ToString();}}return str;}return RegulatFormula;}#endregion
}

 【@网络】

转载于:https://www.cnblogs.com/im404/articles/4320495.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/273366.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Http协议(4)—HTTP认证机制

一、认证1.HTTP质询/响应认证框架服务器收到一条请求并没有按照请求执行动作,而是以一个认证质询执行响应,要求用户提供一个保密信息说明他是谁,当用户再次发送请求时要附上保密证书,如果证书匹配则执行请求,否则返回一条错误信息2.认证协议与首部官方的两个认证协议:基本认证、…

C#加密解密DES字符串转

using System; using System.Collections.Generic; using System.Text; using System.Security.Cryptography; using System.IO;namespace Component {public class Security{public Security(){ }//默认密钥向量private static byte[] Keys { 0x12, 0x34, 0x56, 0x78, 0x90, …

Http协议(6)—安全HTTP

一、保护HTTP的安全1.功能:.服务器认证:客户端知道它是在与真正的服务器进行通信.客户端认证:服务器知道它是在与真正的客户端进行通信.完整性:服务器与客户端的数据不会被修改.加密:客户端与服务器的对话是私密的,不会被窃听.效率:运行足够快的算法.普适性:所有客户端和服务器…

restful处理

重写/覆盖 HTTP 方法 一些HTTP客户端仅能处理简单的的GET和POST请求&#xff0c;为照顾这些功能有限的客户端&#xff0c;API需要一种方式来重写HTTP方法. 尽管没有一些硬性标准来做这事&#xff0c;但流行的惯例是接受一种叫 X-HTTP的请求头&#xff0c;重写是用一个字符串值…

Http协议(7)—Http缓存

一、冗余的数据传输有些客户端访问服务器页面时,服务器会多次响应同一个页面的副本给客户端&#xff0c;这会产生冗余数据&#xff0c;故使用缓存就可以保留第一条相应的副本&#xff0c;以后就响应缓存的数据二、带宽瓶颈在需要下载大型文件时,如果在局域网中放入该文件的一个…

Apache JMeter--网站自动测试与性能测评

Apache JMeter--网站自动测试与性能测评2013-02-28 15:48:05标签&#xff1a;JmeterFrom:http://bdql.iteye.com/blog/291987 出于学习热情&#xff0c;翻译总结Emily H. Halili的《Apache JMeter》一书的部分内容。 JMeter的简介 可以肯定的是&#xff0c;JMeter至少符合以下几…

Linux 重命名文件

inux下重命名文件或文件夹的命令mv既可以重命名&#xff0c;又可以移动文件或文件夹. 例子&#xff1a;将目录A重命名为B mv A B 例子&#xff1a;将/a目录移动到/b下&#xff0c;并重命名为c mv /a /b/c 其实在文本模式中要重命名文件或目录的话也是很简单的&#xff0c;我们只…

苦逼的.net程序员, 转行高富帅iOS移动开发

先知先觉,后知后觉 **- 在做了两三年.net开发后, 还是感觉.net不是那么牛逼, 许多给我一起搞.net的同学, 不是去做了android, 就是去做了iOS, 或者java; 这让我对.net的前景有了一些动摇, 在三思考之后,还是决定放弃.net ,理由很简单,就是工资有点低; 由于蓝鸥iOS培训机构,一…

C# DataTable的詳細使用方法

在项目中经经常使用到DataTable,假设DataTable使用得当&#xff0c;不仅能使程序简洁有用&#xff0c;并且可以提高性能&#xff0c;达到事半功倍的效果&#xff0c;现对DataTable的使用技巧进行一下总结。 一、DataTable简单介绍 (1)构造函数 DataTable() 不…

mysql设置环境变量

-- 设置或修改系统日志有效期SET GLOBAL expire_logs_days8;SHOW VARIABLES LIKE %expire_logs_days%;-- 设置或修改系统最大连接数SET GLOBAL max_connections 2648;SHOW VARIABLES LIKE %max_connections%;-- 修改MYSQL自动编号步长SHOW VARIABLES LIKE %auto_increment%;SE…

CentOS7 编译安装LVS 互为主备 (实测 笔记 Centos 7.0 + ipvsadm 1.27 + keepalived 1.2.15 )

环境&#xff1a; 系统硬件&#xff1a;vmware vsphere (CPU&#xff1a;2*4核&#xff0c;内存2G&#xff0c;双网卡) LVS服务器&#xff08;两台&#xff09;&#xff1a; 系统&#xff1a;Centos7.0 64位&#xff08;LVSkeepalived&#xff09; LvsMaster:192.168.1.21 (主…

shell 执行mysql语句

<pre name"code" class"plain">#变量定义 sqlname"test.sql" dir"/sdb2/backup/mysql_db_backup/backup/databases" host"127.0.0.1" user"root" passwd"root" dbname"test" #导…

hdu3081 Marriage Match II(最大流)

转载请注明出处&#xff1a; http://www.cnblogs.com/fraud/ ——by fraud Marriage Match II Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2410 Accepted Submission(s): 820 Problem Descriptio…

CentOS6安装tomcat6

首先我们要下载一个tomcat的安装包 http://ftp.riken.jp/net/apache/ wget http://ftp.riken.jp/net/apache/tomcat/tomcat-6/v6.0.41/src/apache-tomcat-6.0.41.tar.gz 下载好后解压到一个以目录&#xff0c;我的是放在了/usr/apache-tomcat-6.0.41 tar –zxvf apache-t…

修复 XE7 , XE8 Frame 内 PopupMenu 快捷键失效问题

问题&#xff1a;将 Frame 含 PopupMenu 放置 Form 后&#xff0c;在 Frame 里的 PopupMenu 失效&#xff0c;无法按快捷键。 适用&#xff1a;(XE7 update 1 / XE8) for Windows 平台 修正方法&#xff1a; 请将源码 FMX.Forms.pas 复制到自己的工程目录里&#xff0c;再进行修…

Vmware Centos中安装vmtools工具

在Vmware安装虚拟机是很好玩的&#xff0c;可是有时候在虚拟机与本地主机之间相互传递文件时却是一件比较麻烦的事情&#xff0c;这时候我们安装一个vmtools的工具这样我们就可以随意的在虚拟机与主机之间相互拖拽文件&#xff0c;下面我们就来说说如何安装vmtools 点击虚拟机会…

关于Dapper - 能否不创建定义表对应类使用

1.是可以的&#xff0c;而且支持的很棒 1 /*2 lcg3 * 1.看看能不能用4 * 2.怎么用 - 引哪个文件即可&#xff1f;5 */6 7 //数据库连接参数8 private const string strConn "Data SourceAlen;Initial Catal…

动态规划 背包九讲的实现。

最近在学习动态规划&#xff0c;会了不少基础的之后就开始挑战比较困难的背包问题了&#xff0c;我这里自己写了每一讲的问题&#xff0c;解析&#xff0c;代码&#xff0c;注释。如果dp还没入门的孩纸就去看看我的另一篇文章http://www.cnblogs.com/luyi14/p/4344946.html …

Linux中查看负载

行车过桥 一只单核的处理器可以形象得比喻成一条单车道。设想下&#xff0c;你现在需要收取这条道路的过桥 费 — 忙于处理那些将要过桥的车辆。你首先当然需要了解些信息&#xff0c;例如车辆的载重、以及 还有多少车辆正在等待过桥。如果前面没有车辆在等待&#xff0c;那么你…

flask小demo-数据查询

mysqlconn-flask.py 1 # -*- coding: utf-8 -*-2 #codingutf-83 4 import os5 import mysql.connector6 from flask import Flask, request, render_template7 8 app Flask(__name__)9 10 def db(): 11 # 注意把password设为你的root口令: 12 conn mysql.connect…