`
leonardleonard
  • 浏览: 801707 次
社区版块
存档分类
最新评论

一个常用的正则表达验证类

阅读更多
这是

風語·深蓝

很早以前写的一个正则表达式验证工具类,包含了一些常见的校验和支持自定义的正则表达式匹配,可以选择完全匹配,也可以获取所有匹配项。曾用它仿造Eclispe下的正则表达式插件写过一个工具。因为最近突然有几个朋友都在问这方面的问题,干脆就把代码贴出来好了。
  1. using System;
  2. using System.Collections;
  3. using System.Text.RegularExpressions;
  4. namespace Xrinehart.Framework.Common.Validate
  5. {
  6.     /**//// <summary>
  7.     /// RegularMatch 的摘要说明。
  8.     /// </summary>    
  9.     public class RegularMatch
  10.     {
  11.         private string _String;
  12.         private bool _IsEntirety;
  13.         /**//// <summary>
  14.         /// 可以进行判断的类型
  15.         /// </summary>
  16.         public enum Operation
  17.         {
  18.             Byte, SByte, Int16, Int32, Int64, Single, Double, Boolean, Char, Decimal, DateTime, Date, Time,
  19.             EMail, URL, ChinaPhone, ChineseWord, ChinesePostalCode, Number, StringModel_01, StringModel_02, WideWord, NarrowWord, IPAddress,
  20.             ChineseMobile, ChineseID
  21.         };
  22.         public RegularMatch() { }
  23.         用于判断字符串是否是对应类型(默认为包含匹配)#region 用于判断字符串是否是对应类型(默认为包含匹配)
  24.         public bool IsAccordType(string strVerifyString, Operation op)
  25.         {
  26.             return IsAccordType(strVerifyString, op, false);
  27.         }
  28.         #endregion
  29.         用于判断字符串是否是对应类型(或是否包含对应类型的字符)#region 用于判断字符串是否是对应类型(或是否包含对应类型的字符)
  30.         /**//// <summary>
  31.         /// 用于判断字符串是否是对应类型
  32.         /// </summary>
  33.         /// <param name="strVerifyString">String,需要判断的字符串</param>
  34.         /// <param name="op">Operation枚举,用于选择需要进行的操作</param>
  35.         /// <param name="IsEntirety">Boolean,判断是完全匹配还是包含匹配模式(仅适用于非类型判断时)</param>
  36.         /// <returns></returns>
  37.         public bool IsAccordType(string strVerifyString, Operation op, bool IsEntirety)
  38.         {
  39.             _String = strVerifyString;
  40.             _IsEntirety = IsEntirety;
  41.             switch (op)
  42.             {
  43.                 case Operation.Byte:
  44.                     {
  45.                         return IsByte();
  46.                     }
  47.                 case Operation.SByte:
  48.                     {
  49.                         return IsSByte();
  50.                     }
  51.                 case Operation.Int16:
  52.                     {
  53.                         return IsInt16();
  54.                     }
  55.                 case Operation.Int32:
  56.                     {
  57.                         return IsInt32();
  58.                     }
  59.                 case Operation.Int64:
  60.                     {
  61.                         return IsInt64();
  62.                     }
  63.                 case Operation.Single:
  64.                     {
  65.                         return IsSingle();
  66.                     }
  67.                 case Operation.Double:
  68.                     {
  69.                         return IsDouble();
  70.                     }
  71.                 case Operation.Boolean:
  72.                     {
  73.                         return IsBoolean();
  74.                     }
  75.                 case Operation.Char:
  76.                     {
  77.                         return IsChar();
  78.                     }
  79.                 case Operation.Decimal:
  80.                     {
  81.                         return IsDecimal();
  82.                     }
  83.                 case Operation.DateTime:
  84.                     {
  85.                         return IsDateTime();
  86.                     }
  87.                 case Operation.Date:
  88.                     {
  89.                         return IsDate();
  90.                     }
  91.                 case Operation.Time:
  92.                     {
  93.                         return IsTime();
  94.                     }
  95.                 case Operation.IPAddress:
  96.                     {
  97.                         return IsIPAddress();
  98.                     }
  99.                 case Operation.ChinaPhone:
  100.                     {
  101.                         return IsChinaPhone();
  102.                     }
  103.                 case Operation.ChinesePostalCode:
  104.                     {
  105.                         return IsChinesePostalCode();
  106.                     }
  107.                 case Operation.ChineseMobile:
  108.                     {
  109.                         return IsChineseMobile();
  110.                     }
  111.                 case Operation.EMail:
  112.                     {
  113.                         return IsEmail();
  114.                     }
  115.                 case Operation.URL:
  116.                     {
  117.                         return IsURL();
  118.                     }
  119.                 case Operation.ChineseWord:
  120.                     {
  121.                         return IsChineseWord();
  122.                     }
  123.                 case Operation.Number:
  124.                     {
  125.                         return IsNumber();
  126.                     }
  127.                 case Operation.StringModel_01:
  128.                     {
  129.                         return IsStringModel_01();
  130.                     }
  131.                 case Operation.StringModel_02:
  132.                     {
  133.                         return IsStringModel_02();
  134.                     }
  135.                 case Operation.WideWord:
  136.                     {
  137.                         return IsWideWord();
  138.                     }
  139.                 case Operation.NarrowWord:
  140.                     {
  141.                         return IsNarrowWord();
  142.                     }
  143.                 case Operation.ChineseID:
  144.                     {
  145.                         return IsChineseID();
  146.                     }
  147.                 default:
  148.                     {
  149.                         return false;
  150.                     }
  151.             }
  152.         }
  153.         #endregion
  154.         具体验证方法#region 具体验证方法
  155.         是否Byte类型(8 位的无符号整数): 0 和 255 之间的无符号整数#region 是否Byte类型(8 位的无符号整数): 0 和 255 之间的无符号整数
  156.         /**//// <summary>
  157.         /// 是否Byte类型(8 位的无符号整数): 0 和 255 之间的无符号整数
  158.         /// </summary>
  159.         /// <returns>Boolean</returns>
  160.         protected bool IsByte()
  161.         {
  162.             try
  163.             {
  164.                 Byte.Parse(_String);
  165.             }
  166.             catch
  167.             {
  168.                 return false;
  169.             }
  170.             return true;
  171.         }
  172.         #endregion
  173.         是否SByte类型(8 位的有符号整数): -128 到 +127 之间的整数#region 是否SByte类型(8 位的有符号整数): -128 到 +127 之间的整数
  174.         /**//// <summary>
  175.         /// 是否SByte类型(8 位的有符号整数): -128 到 +127 之间的整数
  176.         /// </summary>
  177.         /// <returns>Boolean</returns>
  178.         protected bool IsSByte()
  179.         {
  180.             try
  181.             {
  182.                 SByte.Parse(_String);
  183.             }
  184.             catch
  185.             {
  186.                 return false;
  187.             }
  188.             return true;
  189.         }
  190.         #endregion
  191.         是否Int16类型(16 位的有符号整数): -32768 到 +32767 之间的有符号整数#region 是否Int16类型(16 位的有符号整数): -32768 到 +32767 之间的有符号整数
  192.         /**//// <summary>
  193.         /// 是否Int16类型(16 位的有符号整数): -32768 到 +32767 之间的有符号整数
  194.         /// </summary>
  195.         /// <returns>Boolean</returns>
  196.         protected bool IsInt16()
  197.         {
  198.             try
  199.             {
  200.                 Int16.Parse(_String);
  201.             }
  202.             catch
  203.             {
  204.                 return false;
  205.             }
  206.             return true;
  207.         }
  208.         #endregion
  209.         是否Int32类型(32 位的有符号整数):-2,147,483,648 到 +2,147,483,647 之间的有符号整数#region 是否Int32类型(32 位的有符号整数):-2,147,483,648 到 +2,147,483,647 之间的有符号整数
  210.         /**//// <summary>
  211.         /// 是否Int32类型(32 位的有符号整数):-2,147,483,648 到 +2,147,483,647 之间的有符号整数
  212.         /// </summary>
  213.         /// <returns>Boolean</returns>
  214.         protected bool IsInt32()
  215.         {
  216.             try
  217.             {
  218.                 Int32.Parse(_String);
  219.             }
  220.             catch
  221.             {
  222.                 return false;
  223.             }
  224.             return true;
  225.         }
  226.         #endregion
  227.         是否Int64类型(64 位的有符号整数): -9,223,372,036,854,775,808 到 +9,223,372,036,854,775,807 之间的整数#region 是否Int64类型(64 位的有符号整数): -9,223,372,036,854,775,808 到 +9,223,372,036,854,775,807 之间的整数
  228.         /**//// <summary>
  229.         /// 是否Int64类型(64 位的有符号整数): -9,223,372,036,854,775,808 到 +9,223,372,036,854,775,807 之间的整数
  230.         /// </summary>
  231.         /// <returns>Boolean</returns>
  232.         protected bool IsInt64()
  233.         {
  234.             try
  235.             {
  236.                 Int64.Parse(_String);
  237.             }
  238.             catch
  239.             {
  240.                 return false;
  241.             }
  242.             return true;
  243.         }
  244.         #endregion
  245.         是否Single类型(单精度(32 位)浮点数字): -3.402823e38 和 +3.402823e38 之间的单精度 32 位数字#region 是否Single类型(单精度(32 位)浮点数字): -3.402823e38 和 +3.402823e38 之间的单精度 32 位数字
  246.         /**//// <summary>
  247.         /// 是否Single类型(单精度(32 位)浮点数字): -3.402823e38 和 +3.402823e38 之间的单精度 32 位数字
  248.         /// </summary>
  249.         /// <returns>Boolean</returns>
  250.         protected bool IsSingle()
  251.         {
  252.             try
  253.             {
  254.                 Single.Parse(_String);
  255.             }
  256.             catch
  257.             {
  258.                 return false;
  259.             }
  260.             return true;
  261.         }
  262.         #endregion
  263.         是否Double类型(单精度(64 位)浮点数字): -1.79769313486232e308 和 +1.79769313486232e308 之间的双精度 64 位数字#region 是否Double类型(单精度(64 位)浮点数字): -1.79769313486232e308 和 +1.79769313486232e308 之间的双精度 64 位数字
  264.         /**//// <summary>
  265.         /// 是否Double类型(单精度(64 位)浮点数字): -1.79769313486232e308 和 +1.79769313486232e308 之间的双精度 64 位数字
  266.         /// </summary>
  267.         /// <returns>Boolean</returns>
  268.         protected bool IsDouble()
  269.         {
  270.             try
  271.             {
  272.                 Double.Parse(_String);
  273.             }
  274.             catch
  275.             {
  276.                 return false;
  277.             }
  278.             return true;
  279.         }
  280.         #endregion
  281.         是否Boolean类型(布尔值):true 或 false#region 是否Boolean类型(布尔值):true 或 false
  282.         /**//// <summary>
  283.         /// 是否Double类型(单精度(64 位)浮点数字): -1.79769313486232e308 和 +1.79769313486232e308 之间的双精度 64 位数字
  284.         /// </summary>
  285.         /// <returns>Boolean</returns>
  286.         protected bool IsBoolean()
  287.         {
  288.             try
  289.             {
  290.                 Boolean.Parse(_String);
  291.             }
  292.             catch
  293.             {
  294.                 return false;
  295.             }
  296.             return true;
  297.         }
  298.         #endregion
  299.         是否Char类型(Unicode(16 位)字符):该 16 位数字的值范围为从十六进制值 0x0000 到 0xFFFF#region 是否Char类型(Unicode(16 位)字符):该 16 位数字的值范围为从十六进制值 0x0000 到 0xFFFF
  300.         /**//// <summary>
  301.         /// 是否Char类型(Unicode(16 位)字符):该 16 位数字的值范围为从十六进制值 0x0000 到 0xFFFF
  302.         /// </summary>
  303.         /// <returns>Boolean</returns>
  304.         protected bool IsChar()
  305.         {
  306.             try
  307.             {
  308.                 Char.Parse(_String);
  309.             }
  310.             catch
  311.             {
  312.                 return false;
  313.             }
  314.             return true;
  315.         }
  316.         #endregion
  317.         是否Char类型(96 位十进制值):从正 79,228,162,514,264,337,593,543,950,335 到负 79,228,162,514,264,337,593,543,950,335 之间的十进制数#region 是否Char类型(96 位十进制值):从正 79,228,162,514,264,337,593,543,950,335 到负 79,228,162,514,264,337,593,543,950,335 之间的十进制数
  318.         /**//// <summary>
  319.         /// 是否Char类型(96 位十进制值):从正 79,228,162,514,264,337,593,543,950,335 到负 79,228,162,514,264,337,593,543,950,335 之间的十进制数
  320.         /// </summary>
  321.         /// <returns>Boolean</returns>
  322.         protected bool IsDecimal()
  323.         {
  324.             try
  325.             {
  326.                 Decimal.Parse(_String);
  327.             }
  328.             catch
  329.             {
  330.                 return false;
  331.             }
  332.             return true;
  333.         }
  334.         #endregion
  335.         是否DateTime类型(表示时间上的一刻): 范围在公元(基督纪元)0001 年 1 月 1 日午夜 12:00:00 到公元 (C.E.) 9999 年 12 月 31 日晚上 11:59:59 之间的日期和时间#region 是否DateTime类型(表示时间上的一刻): 范围在公元(基督纪元)0001 年 1 月 1 日午夜 12:00:00 到公元 (C.E.) 9999 年 12 月 31 日晚上 11:59:59 之间的日期和时间
  336.         /**//// <summary>
  337.         /// 是否DateTime类型(表示时间上的一刻): 范围在公元(基督纪元)0001 年 1 月 1 日午夜 12:00:00 到公元 (C.E.) 9999 年 12 月 31 日晚上 11:59:59 之间的日期和时间
  338.         /// </summary>
  339.         /// <returns>Boolean</returns>
  340.         protected bool IsDateTime()
  341.         {
  342.             try
  343.             {
  344.                 DateTime.Parse(_String);
  345.             }
  346.             catch
  347.             {
  348.                 return false;
  349.             }
  350.             return true;
  351.         }
  352.         #endregion
  353.         是否Date类型(表示时间的日期部分): 范围在公元(基督纪元)0001 年 1 月 1 日 到公元 (C.E.) 9999 年 12 月 31 日之间的日期#region 是否Date类型(表示时间的日期部分): 范围在公元(基督纪元)0001 年 1 月 1 日 到公元 (C.E.) 9999 年 12 月 31 日之间的日期
  354.         /**//// <summary>
  355.         /// 是否Date类型(表示时间的日期部分): 范围在公元(基督纪元)0001 年 1 月 1 日 到公元 (C.E.) 9999 年 12 月 31 日之间的日期
  356.         /// </summary>
  357.         /// <returns>Boolean</returns>
  358.         protected bool IsDate()
  359.         {
  360.             DateTime Value;
  361.             try
  362.             {
  363.                 Value = DateTime.Parse(_String);
  364.             }
  365.             catch
  366.             {
  367.                 return false;
  368.             }
  369.             if (Value.Date.ToString() == _String)
  370.             {
  371.                 return true;
  372.             }
  373.             else
  374.             {
  375.                 return false;
  376.             }
  377.         }
  378.         #endregion
  379.         是否Time类型(表示时间部分HHMMSS): 范围在夜 12:00:00 到晚上 11:59:59 之间的时间#region 是否Time类型(表示时间部分HHMMSS): 范围在夜 12:00:00 到晚上 11:59:59 之间的时间
  380.   &
分享到:
评论

相关推荐

    C# 正则表达验证类

    例如,要验证一个邮箱地址的格式,我们可以编写一个简单的正则表达式: ```csharp string emailRegex = @"^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"; bool isValidEmail = Regex.IsMatch(input, emailRegex...

    正则表达式验证器是对正则表达的验证

    本软件是一个用Java编写的正则表达式验证器,它的主要功能是帮助用户验证自定义的正则表达式是否能够正确匹配指定的字符串。 这个验证器分为两个输入框:第一个输入框用于输入正则表达式,用户可以在这里编写自己的...

    常用正则工具类

    - 在Java项目中,通常会封装一个工具类,集合常用的正则表达式和验证方法,方便复用。 - 这样的工具类可能包含方法如:`isEmail(String input)`验证邮箱格式,`isPhone(String input)`验证手机号码格式,`isIDCard...

    注册邮箱验证、手机号验证等正则表达验证

    在“注册邮箱验证、手机号验证等正则表达验证”这个主题中,我们将探讨如何使用正则表达式来验证用户的邮箱地址和手机号码。 1. 邮箱验证: 邮箱地址通常由用户名、@符号、域名和顶级域组成。一个基本的邮箱正则...

    js正则表达页面验证

    ### js正则表达页面验证知识点详解 #### 一、引言 在Web开发过程中,为了确保数据的有效性和安全性,前端表单验证变得尤为重要。通过JavaScript(简称JS)结合正则表达式进行表单验证是一种常见且高效的方式。本文...

    ios-HZQRegexTestter(正则表达验证工具类,满足大众开发者验证需求,已封装且一句话验证。).zip

    正则表达式验证工具类,满足大众开发者验证需求,已封装且一句话即可验证,主要包括: /** * 1.用户名 - 2.密码 (英文、数字都可,且不包含特殊字符 */ (BOOL)validateStrWithRange:(NSString *)range str:...

    正则表达式验证器(附源代码)

    在“正则表达式验证器”项目中,源代码很可能是围绕这些方法构建的,提供了一个用户界面,允许用户输入正则表达式和测试字符串,然后显示匹配结果。通过这个工具,开发者可以快速测试正则表达式的正确性,避免在实际...

    8个最基本的正则表达

    这个正则表达式确保字符串只包含这些字符,并且至少有一个字符。 5. 匹配一个 Email:`/^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/ 这个正则表达式用于验证电子邮件地址的格式。它包括用户名部分(允许字母...

    正则表达式验证器下载

    正则表达式验证器,可以验证你的表达正确与否,更快更方便你写好正则表达式!

    常用正则表达试好东西

    该模式可以匹配任意一个中文字符。`[\u4e00-\u9fa5]` 表示 Unicode 范围内的中文字符。 #### 匹配全角字符 ```regex [^\x00-\xff] ``` 此模式用来匹配非半角字符,即全角字符或特殊字符等。`\x00-\xff` 包含了 ...

    JS常用正则表达式及验证时间的正则表达式

    验证一个字符串是否仅由字母和数字组成的正则表达式为:`/^[a-zA-Z0-9]*$/`。 10. 检验18位身份证号码: 身份证号码一般为18位,前6位是地区代码,接下来的8位是出生日期码,然后是3位顺序码,最后一位是校验码。...

    常用正则表达式集合

    - **元字符**:在正则表达式中,有一些特殊字符,如`.`(匹配任意字符,除了换行符)、`*`(匹配前一个字符0次或无限次)等,它们被称为元字符。 - **量词**:量词用于指定匹配次数,例如`+`(匹配1次或无限次)、...

    正则表达js验证范例PDF

    以上介绍了多个常用的正则表达式函数及其具体实现方式,它们可以帮助开发者在实际项目中高效地完成各种数据验证任务。通过合理运用这些函数,可以极大地提高前端表单的用户体验,同时减少因输入错误而导致的后端...

    正则表达生成工具

    "正则表达生成工具"正是为了解决手动构造正则表达式困难而设计的一款实用软件,它可以自动生成常见的正则表达式模式,极大地提高了工作效率。 首先,让我们深入了解一下正则表达式的概念。正则表达式由一系列字符和...

    正则验证规则,最全,最实用

    描述中提到的"最全最实用的正则验证插件,含调用示例"可能指的是一个JavaScript库或者工具,它提供了预设的正则表达式模式,并且包含了如何在实际项目中调用和应用这些规则的示例代码。例如,`vstorly.js`可能是这个...

    Java JDK正则表达

    - 此示例中,我们使用了一个较为简单的正则表达式来匹配日期。该表达式`(\d{4})[-/.](\d{2})[-/.](\d{2})`用于匹配标准的日期格式,包括年、月、日,并且允许使用破折号、斜杠或点作为分隔符。 - 使用`Matcher`对象...

    正则表达验证

    标题:正则表达验证 描述:常用的正则表达式,对于页面的限制输入减少很多的编码工作。 在网页开发中,正则表达式是处理文本数据的重要工具之一,尤其是在表单验证方面,它能帮助开发者高效地控制用户输入的数据...

Global site tag (gtag.js) - Google Analytics