比较完整正则表达式类
来源:互联网 发布:打开手机淘宝 编辑:程序博客网 时间:2024/05/16 05:52
/**********************************************************
*
* 功能描述:主要是处理一些常规字符正则验证操作
* 创建时间:2009-05-21
* 创建者:陈国利 cgli200@gmail.com
*
* *********************************************************/
using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
namespace DY.Utrility
{
/// <summary>
/// 正则验证表达式,主要使用静态方法
/// </summary>
public class RegexHelper
{
/// <summary>
/// 构造函数,防止外部构造
/// </summary>
private RegexHelper()
{
}
private static bool IsRegex(string pattern, string input)
{
Regex reg = new Regex(pattern, RegexOptions.Compiled);
return reg.IsMatch(input);
}
/// <summary>
/// 验证是否是数字
/// </summary>
/// <param name="input">输了待验证字符串</param>
/// <returns>如果是数字返回true,否则返回false</returns>
public static bool IsNumeric(string input)
{
return IsRegex(@"[0-9]", input);
}
/// <summary>
/// 验证是否整数(正整数 + 负整数)
/// </summary>
/// <param name="input">输了待验证字符串</param>
/// <returns>如果是返回true,否则返回false</returns>
public static bool IsInteger(string input)
{
return IsRegex(@"^/d+$", input);
}
/// <summary>
/// 验证是否是正整数
/// </summary>
/// <param name="input">输了待验证字符串</param>
/// <returns>如果是返回true,否则返回false</returns>
public static bool IsPositiveInteger(string input)
{
return IsRegex(@"^[1-9]/d*$", input);
}
/// <summary>
/// 验证是否是负整数
/// </summary>
/// <param name="input">输了待验证字符串</param>
/// <returns>如果是返回true,否则返回false</returns>
public static bool IsNativeInteger(string input)
{
return IsRegex(@"^-[0-9]*[1-9][0-9]*$", input);
}
/// <summary>
/// 验证是否非负整数(包括负整数和0)
/// </summary>
/// <param name="input">输了待验证字符串</param>
/// <returns>如果是返回true,否则返回false</returns>
public static bool IsNoNativeInteger(string input)
{
return IsRegex(@"^-?/d+$", input);
}
/// <summary>
/// 验证非正整数(负整数 + 0)
/// </summary>
/// <param name="input">输了待验证字符串</param>
/// <returns>如果是返回true,否则返回false</returns>
public static bool IsNoPositiveInteger(string input)
{
return IsRegex(@"^((-/d+)|(0+))$", input);
}
/// <summary>
/// 验证是否浮点数
/// </summary>
/// <param name="input">输了待验证字符串</param>
/// <returns>如果是返回true,否则返回false</returns>
public static bool IsFloat(string input)
{
return IsRegex(@"^(-?/d+)(/./d+)?$", input);
}
/// <summary>
/// 判断是否为double类型
/// </summary>
/// <param name="input">被验证字符串。</param>
/// <returns></returns>
public static bool IsDouble(string input)
{
return IsRegex(@"^([0-9])[0-9]*(/./w*)?$", input);
//if (input != null)
//{
// return Regex.IsMatch(input.ToString(), @"^([0-9])[0-9]*(/./w*)?$");
//}
//return false;
}
/// <summary>
/// 验证是否为16进制字符串
/// </summary>
/// </summary>
/// <param name="input">输了待验证字符串</param>
/// <returns>如果是返回true,否则返回false</returns>
public static bool IsHexNumber(string input)
{
return IsRegex(@"[^0-9a-fA-F]", input);
}
///// <summary>
///// 判断是否16进制编码
///// </summary>
///// <param name="input">被验证字符串。</param>
///// <returns></returns>
//public static bool IsHexNum(string input)
//{
// input = input.Replace("0X", "").Replace("0x", "");
// int n = Int32.Parse(input, System.Globalization.NumberStyles.HexNumber);
// return IsNumeric(n.ToString());
//}
/// <summary>
/// 验证字符串是否由字母组成
/// </summary>
/// <param name="input">输了待验证字符串</param>
/// <returns>如果是返回true,否则返回false</returns>
public static bool IsWord(string input)
{
return IsRegex(@"^[A-Za-z]+$", input);
}
/// <summary>
/// 验证是否由数字和字母组成的
/// </summary>
/// <param name="input">输了待验证字符串</param>
/// <returns>如果是返回true,否则返回false</returns>
public static bool IsNumbericAndWord(string input)
{
return IsRegex(@"^[A-Za-z0-9]+$", input);
}
/// <summary>
/// 验证是否为IP地址
/// </summary>
/// <param name="input">输了待验证字符串</param>
/// <returns>如果是返回true,否则返回false</returns>
public static bool IsIPAddress(string input)
{
return IsRegex(@"(?<![/d/.])((25[0-5]|2[0-4]/d|1/d{2}|[1-9]/d|/d)/.){3}(25[0-5]|2[0-4]/d|1/d{2}|[1-9]/d|/d)(?![/d/.])", input);
}
/// <summary>
/// 验证是否url地址
/// </summary>
/// <param name="input">输了待验证字符串</param>
/// <returns>如果是返回true,否则返回false</returns>
public static bool IsUrl(string input)
{
return IsRegex(@"/b(/S+)://(/S+)/b", input);
}
/// <summary>
/// 验证是否EMail地址
/// </summary>
/// <param name="input">输了待验证字符串</param>
/// <returns>如果是返回true,否则返回false</returns>
public static bool IsEMail(string input)
{
return IsRegex(@"^[/w-]+(/.[/w-]+)*@[/w-]+(/.[/w-]+)+$", input);
}
/// <summary>
/// 验证是否为指定格式化的日期格式如( 年-月-日 2009-05-22 )
/// </summary>
/// <param name="input">输了待验证字符串</param>
/// <returns>如果是返回true,否则返回false</returns>
public static bool IsFormatDate(string input)
{
string strTemp = @"^((((1[6-9]|[2-9]/d)/d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]/d|3[01]))|(((1[6-9]|[2-9]/d)/d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]/d|30))|(((1[6-9]|[2-9]/d)/d{2})-0?2-(0?[1-9]|1/d|2[0-8]))|(((1[6-9]|[2-9]/d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$";
//|(/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/)
return IsRegex(strTemp, input);
}
/// <summary>
/// 验证是否是电话号码(固定电话如:020-38366688)
/// </summary>
/// <param name="input">输了待验证字符串</param>
/// <returns>如果是返回true,否则返回false</returns>
public static bool IsPhoneNumber(string input)
{
// return IsRegex(@"(d+-)?(d{4}-?d{7}|d{3}-?d{8}|^d{7,8})(-d+)?", input);
return IsRegex(@"(^((/+86)|(86))?-?(/d{3,4}-?)?/d{7,8})$", input);
}
/// <summary>
/// 验证是否中文字符。
/// </summary>
/// <param name="input">输了待验证字符串</param>
/// <returns>如果是返回true,否则返回false</returns>
public static bool IsMobileNumber(string input)
{
return IsRegex(@"^((/+86)|(86))?1(3|5|8)/d{9}$", input);
}
/// <summary>
/// 判断是否为Unicode码
/// </summary>
/// <param name="input">被验证字符串。</param>
/// <returns>返回bool类型</returns>
public static bool IsUnicode(string input)
{
return IsRegex(@"^[/u4E00-/u9FA5/uE815-/uFA29]+$", input);
//string pattern = @"^[/u4E00-/u9FA5/uE815-/uFA29]+$";
//return Regex.IsMatch(input, pattern);
}
/// <summary>
/// 验证是否中文字符
/// </summary>
/// <param name="input">输了待验证字符串</param>
/// <returns>如果是返回true,否则返回false</returns>
public static bool IsChinese(string input)
{
return IsRegex(@"^([/u4e00-/u9fa5]+|[a-zA-Z0-9]+)$", input);
}
/// <summary>
///验证匹配双字节字符(包括汉字在内)
/// </summary>
/// <param name="input">输了待验证字符串</param>
/// <returns>如果是返回true,否则返回false</returns>
public static bool IsDoubleByte(string input)
{
return IsRegex(@"[^/x00-/xff] ", input);
}
/// <summary>
/// 匹配空行的正则表达式
/// </summary>
/// <param name="input">输了待验证字符串</param>
/// <returns>如果是返回true,否则返回false</returns>
public static bool IsBlankLine(string input)
{
return IsRegex(@"/n[/s| ]*/r", input);
}
/// <summary>
/// 验证是否是为HTML标记(还需要改进的地方,如含有空隔或者有属性的时候不行)
/// </summary>
/// <param name="input">输了待验证字符串</param>
/// <returns>如果是返回true,否则返回false</returns>
public static bool IsHTML(string input)
{
return IsRegex(@"<(/S*?)[^>]*>.*?<//1>|<.*? />", input);
}
/// <summary>
/// 判断字符串是否存在操作数据库的安全隐患
/// </summary>
/// <param name="input">被验证字符串。</param>
/// <returns>返回bool类型</returns>
public static bool IsSafety(string input)
{
string str = input.Replace("%20", " ");
str = Regex.Replace(str, @"/s", " ");
string pattern = @"select |insert |delete from |count/(|drop table|update |truncate |asc/(|mid/(|char/(|xp_cmdshell|exec master|net localgroup administrators|:|net user|""|/'| or ";
return !IsRegex(pattern, input);//!Regex.IsMatch(str, pattern, RegexOptions.IgnoreCase);
}
/// <summary>
/// 验证是否为QQ号码
/// </summary>
/// <param name="input">输了待验证字符串</param>
/// <returns>如果是返回true,否则返回false</returns>
public static bool IsQQNumber(string input)
{
return IsRegex(@"[1-9][0-9]{4,}", input);
}
/// <summary>
/// 验证是否邮政编码
/// </summary>
/// <param name="input">输了待验证字符串</param>
/// <returns>如果是返回true,否则返回false</returns>
public static bool IsPostalCode(string input)
{
return IsRegex(@"[1-9]/d{5}(?!/d)", input);
}
#region 判断是否为相对地址(虚拟地址)
/// <summary>
/// 判断是否为相对地址(虚拟地址)
/// </summary>
/// <param name="input">被验证字符串。</param>
/// <returns>返回bool类型</returns>
public static bool IsRelativePath(string input)
{
if (input == null || input == string.Empty)
{
return false;
}
if (input.StartsWith("/") || input.StartsWith("?"))
{
return false;
}
if (Regex.IsMatch(input, @"^/s*[a-zA-Z]{1,10}:.*$"))
{
return false;
}
return true;
}
#endregion
#region 判断是否为绝对地址(物理地址)
/// <summary>
/// 判断是否为绝对地址(物理地址)
/// </summary>
/// <param name="input">被验证字符串。</param>
/// <returns>返回bool类型</returns>
public static bool IsPhysicalPath(string input)
{
return IsRegex(@"^/s*[a-zA-Z]:.*$",input);
//string pattern = @"^/s*[a-zA-Z]:.*$";
//return Regex.IsMatch(input, pattern);
}
#endregion
#region 判断用户IP地址段是否在指定数组当中
/// <summary>
/// 返回指定IP是否在指定的IP数组所限定的范围内, IP数组内的IP地址可以使用*表示该IP段任意, 例如192.168.1.*
/// </summary>
/// <param name="ip">用户输入的IP</param>
/// <param name="ipArray">指定的IP地址段数组</param>
/// <returns>返回bool类型</returns>
public static bool IsInIPArray(string ip, string[] ipArray)
{
string[] userip = ip.Split('.');
for (int j = 0; j < ipArray.Length; j++)
{
string[] tmpip = ipArray[j].Split('.');
int r = 0;
for (int i = 0; i < tmpip.Length; i++)
{
if (tmpip[i] == "*")
{
return true;
}
if (userip.Length > i)
{
if (tmpip[i] == userip[i])
{
r++;
}
else
{
break;
}
}
else
{
break;
}
}
if (r == 4)
{
return true;
}
}
return false;
}
#endregion
}
}
- 比较完整正则表达式类
- 比较完整的正则表达式
- 比较完整的正则表达式资料
- 正则表达式完整匹配
- 日期的完整正则表达式:
- 分享完整的正则表达式
- 正则表达式差异比较
- Java/Android合法完整类名正则表达式
- 手机号码,邮箱,qq完整正则表达式及常用正则表达式
- 比较常用的正则表达式
- 比较齐全的正则表达式
- 比较全的正则表达式
- 比较全的正则表达式
- 正则表达式元字符完整列表
- Java正则表达式替换完整单词
- 手机号码,邮箱,qq完整正则表达式
- 正则表达式完整用法(转载)
- JS正则表达式完整教程(略长)
- 浏览器版本检测JS代码
- 控制用户访问--用户和权限
- 修复windows的性能计数器
- apache的作用和tomcat的区别
- fastdb_字符串
- 比较完整正则表达式类
- 软件工程专业毕业生的就业前景分析
- C#.net模拟提交表单POST
- C语言小游戏源代码
- 能提高自己的相关网站
- 终于回来了
- ADS进行源码级别的U-BOOT 调试 H-JTAG
- 做手机游戏得关注一下3g对手游的影响,现转一篇数据调查
- Xml学习笔记(一)基础篇