热门标签 | 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


推荐阅读
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
  • Ihaveastringwithquotesaroundthepathasfollows:我在路径周围有一个带引号的字符串,如下所示:C:\ProgramFiles(x ... [详细]
  • 本文介绍如何从字符串中移除大写、小写、特殊、数字和非数字字符,并提供了多种编程语言的实现示例。 ... [详细]
  • 本文介绍了如何使用JavaScript的Fetch API与Express服务器进行交互,涵盖了GET、POST、PUT和DELETE请求的实现,并展示了如何处理JSON响应。 ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • 深入解析Nginx中的Location指令及其属性
    本文将详细探讨Nginx配置文件中关键的location指令,包括其三种匹配方式(精准匹配、普通匹配和正则匹配),以及如何在实际应用中灵活运用这些匹配规则。此外,还将介绍location下的重要子元素如root、alias和proxy_pass,并解释相关参数的使用方法。 ... [详细]
  • JMeter接口关联与数据提取:正则表达式和JSON Extractor的使用
    在使用JMeter进行接口测试时,常常需要从前一个接口的响应中提取数据并应用于后续请求。本文将详细介绍如何利用正则表达式提取器(Regular Expression Extractor)和JSON Extractor来实现这一需求。 ... [详细]
  • Win10 UWP 开发技巧:利用 XamlTreeDump 获取 XAML 元素树
    本文介绍如何在 Win10 UWP 开发中使用 XamlTreeDump 库来获取和转换 XAML 元素树为 JSON 字符串,这对于 UI 单元测试非常有用。 ... [详细]
  • 最近同事提了一个需求过来,他觉得项目对于第三方日志记录的太多了,只想记录一些业务相关的日志减少对于框架日志的显示。具体要求就是对于框架日志只显示warn等级以上的,而业务日志显示info等级以上 ... [详细]
  • js常用方法(1)startWithJava代码varstartsWithfunction(str,regex){if(regexundefined||strundefined|| ... [详细]
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社区 版权所有