String-------RegularHelper
/// <summary>
/// 正则表达式相关方法集合
/// </summary>
public static class RegularHelper
{
private const string m_NumberPattm = @"^[-+]?(0{1}|(([1-9]){1}[0-9]{0,6}))?$";
private const string m_NumberPattmTemplate = @"^[-+]?(0{1}|(([1-9]){1}[0-9]{0,digit}))?$";
private const string m_DecimalPattm = @"^[-+]?(0{1}|(([1-9]){1}[0-9]{0,6}))(\.[0-9]{0,2})?$";
private const string m_DecimalPattmTemplate = @"^[-+]?(0{1}|(([1-9]){1}[0-9]{0,intDigit}))(\.[0-9]{0,decimalDigit})?$";
private const string m_EmailPattm = @"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$";
private const string m_StringPattm="^\\w+$";
private const string m_URLPattm = @"^http(s)?://([\w-]+\.?)+[\w-]+(\:\d+)?(/[\w- ./?%&=]*)?$";
private const string m_GUIDPattm = @"^[A-Fa-f0-9]{8}(-[A-Fa-f0-9]{4}){3}-[A-Fa-f0-9]{12}$"; private static Dictionary<string, Regex> m_RegexList = new Dictionary<string, Regex>(); /// <summary>
/// 根据传入的字符串和提供的正则表达式进行验证
/// </summary>
/// <param name="input">需要进行验证的字符串</param>
/// <param name="pattem">验证时使用的正则表达式</param>
/// <param name="options">正则表达式选项</param>
/// <returns>匹配通过返回true,否则返回false</returns>
public static bool IsMatch(string input, string pattem, RegexOptions options)
{
Regex reg = null;
lock (typeof(RegularHelper))
{
if (m_RegexList.ContainsKey(pattem))
{
reg = m_RegexList[pattem];
}
else
{
reg = new Regex(pattem, options);
m_RegexList.Add(pattem, reg);
}
}
return reg.IsMatch(input);
} /// <summary>
/// 根据传入的字符串和提供的正则表达式进行验证
/// </summary>
/// <param name="input">需要进行验证的字符串</param>
/// <param name="pattem">验证时使用的正则表达式</param>
/// <returns>匹配通过返回true,否则返回false</returns>
public static bool IsMatch(string input, string pattem)
{
return IsMatch(input, pattem, RegexOptions.IgnoreCase | RegexOptions.Compiled);
} /// <summary>
/// 检查输入的字符串是否是整数,默认7位数
/// </summary>
/// <param name="input">输入的字符串</param>
/// <returns>匹配通过返回true,否则返回false</returns>
public static bool IsNumber(string input)
{
bool result=false;
result = IsMatch(input, m_NumberPattm);
return result;
} /// <summary>
/// 指定数字长度,进行整数验证
/// <remarks>如果digit为空或者digit小于等于0,将自动默认使用7位数字验证</remarks>
/// </summary>
/// <param name="input">输入的字符串</param>
/// <param name="digit">整数最大位数</param>
/// <returns>匹配通过返回true,否则返回false</returns>
public static bool IsNumber(string input, int digit)
{
bool result = false;
string pattmTemplate = string.Empty;
if ( digit > )
{
pattmTemplate = m_NumberPattmTemplate.Replace("digit",Convert.ToString(digit-));
}
else
{
pattmTemplate = m_NumberPattm;
}
result = IsMatch(input, pattmTemplate);
return result;
} /// <summary>
/// 检查输入的字符串是否包含小数格式,默认7位整数,2位小数
/// </summary>
/// <param name="input">输入的字符串</param>
/// <returns>匹配通过返回true,否则返回false</returns>
public static bool IsDecimal(string input)
{
bool result = false;
result = IsMatch(input, m_DecimalPattm);
return result;
} /// <summary>
/// 指定小数位数,对输入字符串进行验证
/// <remarks>此时整数部分,默认使用最大7位,小数根据使用者指定产生。如果指定的小数位数小于等于0,那么将采用默认的2位格式验证</remarks>
/// </summary>
/// <param name="input">输入的字符串</param>
/// <param name="decimalDigit">小数最大位数</param>
/// <returns>匹配通过返回true,否则返回false</returns>
public static bool IsDecimal(string input,int decimalDigit)
{
bool result = false;
string pattmTemplate = string.Empty;
if ( decimalDigit > )
{
pattmTemplate = m_DecimalPattmTemplate.Replace("decimalDigit", decimalDigit.ToString());
pattmTemplate = pattmTemplate.Replace("intDigit", "");
}
else
{
pattmTemplate = m_DecimalPattm;
}
result = IsMatch(input, pattmTemplate);
return result;
} /// <summary>
/// 指定整数位数和小数位数,进行数字验证
/// <remarks>如果指定的整数位数小于0,那么将使用默认的7位整数格式
/// 如果指定的小数位数小于0,那么将使用默认的2位小数格式</remarks>
/// </summary>
/// <param name="input">输入的字符串</param>
/// <param name="intDigit">整数位数</param>
/// <param name="decimalDigit">小数位数</param>
/// <returns>匹配通过返回true,否则返回false</returns>
public static bool IsDecimal(string input,int intDigit, int decimalDigit)
{
bool result = false;
string pattmTemplate = string.Empty;
if ( intDigit > )
{
pattmTemplate = m_DecimalPattmTemplate.Replace("intDigit", Convert.ToString(intDigit-)); }
else
{
pattmTemplate = pattmTemplate.Replace("intDigit", "");
}
if ( decimalDigit > )
{
pattmTemplate = pattmTemplate.Replace("decimalDigit", decimalDigit.ToString()); }
else
{
pattmTemplate = pattmTemplate.Replace("decimalDigit", "");
}
result = IsMatch(input, pattmTemplate);
return result;
}
/// <summary>
/// 验证输入字符串是否EMail地址
/// </summary>
/// <param name="input">输入的字符串</param>
/// <returns>匹配通过返回true,否则返回false</returns>
public static bool IsEmailAddress(string input)
{
bool result = false;
result = IsMatch(input, m_EmailPattm);
return result;
} /// <summary>
/// 验证输入字符串是否是26个字母+数字+下划线
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public static bool IsCheck(string input)
{
bool result = false;
result = IsMatch(input, m_StringPattm);
return result;
} /// <summary>
/// 验证输入字符串是否是URL
/// </summary>
/// <param name="input">输入的字符串</param>
/// <returns>匹配通过返回true,否则返回false</returns>
public static bool IsURL(string input)
{
return IsMatch(input, m_URLPattm);
} /// <summary>
/// 验证输入字符串是否是GUID值
/// </summary>
/// <param name="input">输入的字符串</param>
/// <returns>匹配通过返回true,否则返回false</returns>
public static bool IsGuid(string input)
{
return IsMatch(input, m_GUIDPattm);
}
}
String-------RegularHelper的更多相关文章
- RegularHelper
private const string m_NumberPattm = @"^[-+]?(0{1}|(([1-9]){1}[0-9]{0,6}))?$"; private con ...
- 透过WinDBG的视角看String
摘要 : 最近在博客园里面看到有人在讨论 C# String的一些特性. 大部分情况下是从CODING的角度来讨论String. 本人觉得非常好奇, 在运行时态, String是如何与这些特性联系上的 ...
- JavaScript String对象
本编主要介绍String 字符串对象. 目录 1. 介绍:阐述 String 对象的说明以及定义方式. 2. 实例属性:介绍 String 对象的实例属性: length. 3. 实例方法:介绍 St ...
- ElasticSearch 5学习(9)——映射和分析(string类型废弃)
在ElasticSearch中,存入文档的内容类似于传统数据每个字段一样,都会有一个指定的属性,为了能够把日期字段处理成日期,把数字字段处理成数字,把字符串字段处理成字符串值,Elasticsearc ...
- [C#] string 与 String,大 S 与小 S 之间没有什么不可言说的秘密
string 与 String,大 S 与小 S 之间没有什么不可言说的秘密 目录 小写 string 与大写 String 声明与初始化 string string 的不可变性 正则 string ...
- js报错: Uncaught RangeError: Invalid string length
在ajax请求后得到的json数据,遍历的时候chrome控制台报这个错误:Uncaught RangeError: Invalid string length,在stackoverflow查找答案时 ...
- c# 字符串连接使用“+”和string.format格式化两种方式
参考文章:http://www.liangshunet.com/ca/201303/218815742.htm 字符串之间的连接常用的两种是:“+”连接.string.format格式化连接.Stri ...
- 【手记】注意BinaryWriter写string的小坑——会在string前加上长度前缀length-prefixed
之前以为BinaryWriter写string会严格按构造时指定的编码(不指定则是无BOM的UTF8)写入string的二进制,如下面的代码: //将字符串"a"写入流,再拿到流的 ...
- JavaScript中String对象的方法介绍
1.字符方法 1.1 charAt() 方法,返回字符串中指定位置的字符. var question = "Do you like JavaScript?"; alert(ques ...
- 在多线程编程中lock(string){...}隐藏的机关
常见误用场景:在订单支付环节中,为了防止用户不小心多次点击支付按钮而导致的订单重复支付问题,我们用 lock(订单号) 来保证对该订单的操作同时只允许一个线程执行. 这样的想法很好,至少比 lock( ...
随机推荐
- C# 汉字转拼音 使用微软的Visual Studio International Pack 类库提取汉字拼音首字母
代码参考该文http://www.cnblogs.com/yazdao/archive/2011/06/04/2072488.html VS2015版本 1.使用Nuget 安装 "Simp ...
- ActiveMQ 使用
ActiveMQ资料大全 官方文档 入门:http://activemq.apache.org/getting-started.html 常见问题:http://activemq.apache.org ...
- C++实现单例模式
昨天面试的时候,面试官让我用C++或Java实现一个单例模式. 因为设计模式是在12年的时候学习过这门课,而且当时觉得这门课很有意思,所以就把课本读了几遍,所以印象比较深刻,但是因为实际编程中很少注意 ...
- XML 文档和数据
.NET Framework 4.5 其他版本 .NET Framework 提供了一组全面而集成的类,可用来方便地生成可以识别 XML 的应用程序. 通过以下命名空间中的类,可以分析和编写 XML, ...
- python requests 配置超时及重试次数
import requests from requests.adapters import HTTPAdapter s = requests.Session() s.mount('http://', ...
- jQuery诞生记-原理与机制
一.看似偶然的东西实际是必然会发生的 我大学时候在图书馆翻过一本很破旧的书,讲生物理论的,主要内容就是探讨生命的产生是偶然还是必然.里面很多亚里士多德都看不懂的公式计算什么的,还有模拟原始地球环境出现 ...
- 使用BAT批处理执行sql语句的代码
使用BAT批处理执行sql语句的代码 有时候需要执行一些Sql语句时,不想开企业管理器,或者是发给客户执行但那边又不懂代码,这时就可以用下面方法 1.把待执行Sql保存在一个文件,这里为2011022 ...
- MediaPlayer 播放assets 文件夹下面的视频报错
Android MediaPlayer 播放assets 文件夹下面的视频报错 报下面的错: java.io.FileNotFoundException: This file can not be o ...
- saiku执行过程代码跟踪
使用了很久的saiku,决定跟踪一下代码,看看它的执行核心过程: 一.入口controller代码 1.1.页面打开之后,会发送一个ajax请求 Request URL: http://l-tdata ...
- Ubuntu 16.04 LTS更新
Canonical今天正式发布了新版的Ubuntu系统,针对PC.笔记本.上网本.平板和智能手机各类设备.这次的Ubuntu 16.04代号为Xenial Xerus——这个代号是由Canonical ...