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 > 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的更多相关文章
- String-------RegularHelper
/// <summary> /// 正则表达式相关方法集合 /// </summary> public static class RegularHelper { private ...
- Sword pcre库使用
#include <stdlib.h> #include <string.h> #include "regularhelper.h" #include &q ...
随机推荐
- DownloadManager
在androi中,volley适合小文件的获取和大并发,如果支持大文件的下载可以用Android原生的DownloadManager.DownloadManager默认支持多线程下载.断点续传等. 基 ...
- Sensor(ACCELEROMETER)
package com.example.sensor01; import java.util.List; import android.hardware.Sensor; import android. ...
- 人人都是 DBA(IV)SQL Server 内存管理
SQL Server 的内存管理是一个庞大的主题,涉及特别多的概念和技术,例如常见的 Plan Cache.Buffer Pool.Memory Clerks 等.本文仅是管中窥豹,描述常见的内存管理 ...
- SQLServer性能优化之 nolock,大幅提升数据库查询性能
公司数据库随着时间的增长,数据越来越多,查询速度也越来越慢.进数据库看了一下,几十万调的数据,查询起来确实很费时间. 要提升SQL的查询效能,一般来说大家会以建立索引(index)为第一考虑.其实除了 ...
- 渣渣小本求职复习之路每天一博客系列——TCP/IP协议栈(5)
前情回顾:一篇短短的博客明显不能满足TCP和UDP这两个饥渴的汉子,而且还被应用协议占了一小半的篇幅.在昨天结束之后,相信大家都基本对TCP/IP协议栈的轮廓有一个大概的印象了,能够对整体有所把握. ...
- mac安装redis
1.到官网下载最新的redis. http://redis.io/download 2.将下载下来的tar.gz 压缩包,(在/Users/***/Downloads)拷贝到usr/local目录下 ...
- 鸟哥的Linux私房菜——基础学习篇 —— 笔记2
at 语法 == 注意,输入at之后便进入命令行模式 ------- 不管怎么样,只会执行一次. [test @test test]# at [-m] TIME (输入工作指令)[test @test ...
- JavaScript中this的一些怪异现象
<!--JavaScript伪协议和内联事件对于this的指向不同--> <a href="#" onclick="alert(this.tagName ...
- Atitit 热更新资源管理器 自动更新管理器 功能设计
Atitit 热更新资源管理器 自动更新管理器 功能设计 · 多线程并行下载支持 · 两层进度统计信息:文件级以及字节级 · Zip压缩文件支持 · 断点续传 · 详细的错误报告 · 文件下载失败重试 ...
- salesforce 零基础开发入门学习(九)Approval Process 介绍
在阅读此篇文章前,可以先参考阅读一个前辈总结的关于Approval Process的操作.以下为参考的链接: http://www.cnblogs.com/mingmingruyuedlut/p/37 ...