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 > 0)
{
pattmTemplate = m_NumberPattmTemplate.Replace("digit",Convert.ToString(digit-1));
}
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 > 0)
{
pattmTemplate = m_DecimalPattmTemplate.Replace("decimalDigit", decimalDigit.ToString());
pattmTemplate = pattmTemplate.Replace("intDigit", "6");
}
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 > 0)
{
pattmTemplate = m_DecimalPattmTemplate.Replace("intDigit", Convert.ToString(intDigit-1)); }
else
{
pattmTemplate = pattmTemplate.Replace("intDigit", "6");
}
if ( decimalDigit > 0)
{
pattmTemplate = pattmTemplate.Replace("decimalDigit", decimalDigit.ToString()); }
else
{
pattmTemplate = pattmTemplate.Replace("decimalDigit", "2");
}
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);
}

  

RegularHelper的更多相关文章

  1. String-------RegularHelper

    /// <summary> /// 正则表达式相关方法集合 /// </summary> public static class RegularHelper { private ...

  2. Sword pcre库使用

    #include <stdlib.h> #include <string.h> #include "regularhelper.h" #include &q ...

随机推荐

  1. 分布式系统之Quorum (NRW)算法

    基于Quorum投票的冗余控制算法 Quorom 机制,是一种分布式系统中常用的,用来保证数据冗余和最终一致性的投票算法,其主要数学思想来源于鸽巢原理. 在有冗余数据的分布式存储系统当中,冗余数据对象 ...

  2. objective-c(内存管理)

    本文主要记录objective-c 内存管理的知识点: 1.objective-c的对象都是分配内存在堆上,与C的mallock和C++的new类似,只有int等系统变量分配内存在栈上: 2.obje ...

  3. 开发者必知的几款App快速开发工具

    “我有一个好创意,就差一个CTO……” ,这是今年炒的比较火的一句话. “原生APP开发难度大,周期长,成本高,还没上线市场已经被占领了.这个有没有解决方案?” “APP版本迭代更新,都是企业的一道难 ...

  4. Alpha阶段冲刺总结

    Alpha阶段冲刺阶段总结 预期计划: 本阶段的预期计划是实现打地鼠游戏的基本功能,包括:游戏功能.难度调节功能.计时功能.计数记分功能.DIY设置功能.分数记录功能. 实际进展: 在经过三周的Alp ...

  5. Nim教程【十】

    openarray类型 注意:openarray类型只能用于参数 固定大小的数组虽然性能不错,但过于呆板,使用取来不是很方便 对于一个方法来说,传入参数如果是一个数组,最好是不要限制数组的长度 也就是 ...

  6. iOS——自定义Segue实现总结

    在阅读了iOS 8自定义动画转场上手指南后,刚开始不理解,后来慢慢消化了,现在总结如下: 1. 自定义Segue关键在于继承UIStoryboardSegue并重写perform方法 2. 动画可以在 ...

  7. IOS 基础-define、const、extern、全局变量

    这里介绍一下define.const.extern的用法.优劣以及要注意的地方. 1.define 宏define是定义一个变量,没有类型信息.define定义的常量在内存中有若干个拷贝. defin ...

  8. JS数组的concat、push等方法,操作的是地址指针,而非内存操作

    var a = [{x:1}, {y:1}, {z:3}]; var b = a.concat(['gg', 'ff']); var c = []; c.push(a[1]); console.log ...

  9. 更新日志 - BugHD 新增邮件告警功能

    最近 BugHD 又新增了一些功能,包括邮件告警. issue 分享. issue 备注等,同时也做了性能优化.希望能够帮助你更高效地收集解决应用崩溃. BugHD 新增功能 1.邮件告警 除了 We ...

  10. iOS中app启动闪退的原因

    这种情况应和所谓的内存不足关系不大,很少有程序会在初始化时载入大量内容导致崩溃,并且这类问题也很容易在开发阶段被发现,所以内存不足造成秒退的可能性低(内存不足退,通常是程序用了一段时间,切换了几个画面 ...