热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C#常用验证工厂模式

类型:控制台程序我们在用到验证的时候,通常会出现代码显示的“啰嗦”代码为此,写了一个工厂模式具体思路将正则表达式提示信息以配置的方式,写到一起,随后,根据名称和值自动判断是否正确

类型:控制台程序

我们在用到验证的时候,通常会出现代码显示的 “啰嗦”代码

为此,写了一个工厂模式 

具体思路 将正则表达式 提示信息以配置的方式,写到一起,随后,根据名称和值自动判断是否正确。

后期维护,只需要不断添加这个类的验证信息 



下面是代码


/********************************************************************************
** 作者: Net_J
** 日期 2016/08/10 9:48:20
** 描述 正则表达式模板
** 版本.: V1.0.0
*********************************************************************************/

using System.Data;

namespace RegexClasss
{

public class RegexTemp
{
private string name;
private string regexValue;
private string message;
public string Name
{
get { return name; }
set { name = value; }
}

public string RegexValue
{
get { return regexValue; }
set { regexValue = value; }
}

public string Message
{
get { return message; }
set { message = value; }
}
}
}


/********************************************************************************
** 作者: Net_J
** 日期 2016/08/10 9:51:54
** 描述 正则验证配置类
** 版本.: V1.0.0
*********************************************************************************/

using System.Collections;

namespace RegexClasss
{
public static class RegexLists
{
public static ArrayList regexlist;

public static ArrayList GetList()
{
regexlist = regexlist ?? new ArrayList
{
new RegexTemp
{
Name = "emial",
RegexValue = "^\\w+@\\w+(\\.([a-zA-Z0-9]{2,3})){1,2}$",
Message = "邮箱验证有误"
},
new RegexTemp {Name = "phone", RegexValue = "^[1][0-9]{10}$", Message = "手机号码有误"},
new RegexTemp {Name = "sex", RegexValue = "[男]|[女]", Message = "性别验证有误"},
new RegexTemp {Name = "idCard", RegexValue = "[1-9][0-9]{16}([0-9]|[x]|[X]){1}", Message = "身份证号验证有误"}
};
return regexlist;
}
}
}


/********************************************************************************
** 作者: Net_J
** 日期 2016/08/10 9:47:05
** 描述 正则表达式解析类
** 版本.: V1.0.0
*********************************************************************************/

using System.Text.RegularExpressions;

namespace RegexClasss
{

public static class RegexTools
{
public static void GetMessage(string name,string value)
{
foreach (RegexTemp lists in RegexLists.GetList())
{
if (lists.Name != name) continue;
string error =RegeMethod(value, lists.RegexValue, lists.Message);
if (error == "") continue;
// ReSharper disable once ObjectCreationAsStatement
throw new RegexMatchTimeoutException(error);
}
}

///
/// 正则表达式验证方法
///

public static string RegeMethod(string value,string regexValue,string error)
{
return Regex.Match(value, regexValue).Success ? "" : error;
}
}
}

/********************************************************************************
** 作者:Net_J
** 日期 2016/08/10 10:27:56
** 描述 控制台入口程序
** 版本.: V1.0.0
*********************************************************************************/

using System;

namespace RegexClasss
{
public class Program
{
[STAThread]
public static void Main()
{
Test();
Console.ReadKey();
}

public static void Test()
{
try
{
RegexTools.GetMessage("emial", "1427953301@qq.com");
RegexTools.GetMessage("phone", "182931053232");
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
}
}

具体程序连接

https://pan.baidu.com/s/1kVbbSnt 提取码:m2wj


推荐阅读
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 第四章高阶函数(参数传递、高阶函数、lambda表达式)(python进阶)的讲解和应用
    本文主要讲解了第四章高阶函数(参数传递、高阶函数、lambda表达式)的相关知识,包括函数参数传递机制和赋值机制、引用传递的概念和应用、默认参数的定义和使用等内容。同时介绍了高阶函数和lambda表达式的概念,并给出了一些实例代码进行演示。对于想要进一步提升python编程能力的读者来说,本文将是一个不错的学习资料。 ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • 本文介绍了使用Spark实现低配版高斯朴素贝叶斯模型的原因和原理。随着数据量的增大,单机上运行高斯朴素贝叶斯模型会变得很慢,因此考虑使用Spark来加速运行。然而,Spark的MLlib并没有实现高斯朴素贝叶斯模型,因此需要自己动手实现。文章还介绍了朴素贝叶斯的原理和公式,并对具有多个特征和类别的模型进行了讨论。最后,作者总结了实现低配版高斯朴素贝叶斯模型的步骤。 ... [详细]
  • 本文详细介绍了使用C#实现Word模版打印的方案。包括添加COM引用、新建Word操作类、开启Word进程、加载模版文件等步骤。通过该方案可以实现C#对Word文档的打印功能。 ... [详细]
  • Ihaveaworkfolderdirectory.我有一个工作文件夹目录。holderDir.glob(*)>holder[ProjectOne, ... [详细]
  • node.jsurlsearchparamsAPI哎哎哎 ... [详细]
  • 巧用arguments在Javascript的函数中有个名为arguments的类数组对象。它看起来是那么的诡异而且名不经传,但众多的Javascript库都使用着它强大的功能。所 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 带添加按钮的GridView,item的删除事件
    先上图片效果;gridView无数据时显示添加按钮,有数据时,第一格显示添加按钮,后面显示数据:布局文件:addr_manage.xml<?xmlve ... [详细]
  • 近期,某用户在重启RAC一个节点的数据库实例时,发现启动速度非常慢。同时业务部门反馈连接RAC存活节点的业务也受影响。通过对日志的分析, ... [详细]
  • 正则表达式及其范例
    为什么80%的码农都做不了架构师?一、前言部分控制台输入的字符串,编译成java字符串之后才送进内存,比如控制台打\, ... [详细]
author-avatar
温倩0918
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有