在项目中需要对用户输入的信息,以及一些方法生成的结果进行验证,一般在项目中较多的采用js插件或js来进行有关信息的校验,但是从项目安全性的角度进行考虑,可对系统进行js注入。

如果在后台对用户输入的信息进行验证会相对的安全,在出现信息验证不合法时,可以直接在程序中抛出异常,终止程序的运行。

现在提供几种较为常用的验证方法,可以减少在项目中开发时间和错误性:

1.判断域名:

        /// <summary>
/// 普通的域名
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public static bool IsCommonDomain(string value)
{
return QuickValidate("^(www.)?(\\w+\\.){1,3}(org|org.cn|gov.cn|com|cn|net|cc)$", value.ToLower());
}

2.检查一个字符串是否是纯数字构成的,一般用于查询字符串参数的有效性验证:

        /// <summary>
/// 检查一个字符串是否是纯数字构成的,一般用于查询字符串参数的有效性验证。
/// </summary>
/// <param name="value">需验证的字符串。</param>
/// <returns>是否合法的bool值。</returns>
public static bool IsNumeric(string value)
{
return QuickValidate("^[-]?[1-9]*[0-9]*$", value);
}

3.检查一个字符串是否是纯字母和数字构成的,一般用于查询字符串参数的有效性验证:

        /// <summary>
/// 检查一个字符串是否是纯字母和数字构成的,一般用于查询字符串参数的有效性验证。
/// </summary>
/// <param name="value">需验证的字符串。</param>
/// <returns>是否合法的bool值。</returns>
public static bool IsLetterOrNumber(string value)
{
return QuickValidate("^[a-zA-Z0-9_]*$", value);
}

4.判断是否是数字,包括小数和整数:

        /// <summary>
/// 判断是否是数字,包括小数和整数。
/// </summary>
/// <param name="value">需验证的字符串。</param>
/// <returns>是否合法的bool值。</returns>
public static bool IsNumber(string value)
{
return QuickValidate("^(0|([1-9]+[0-9]*))(.[0-9]+)?$", value);
}

5.快速验证一个字符串是否符合指定的正则表达式:

        /// <summary>
/// 快速验证一个字符串是否符合指定的正则表达式。
/// </summary>
/// <param name="express">正则表达式的内容。</param>
/// <param name="value">需验证的字符串。</param>
/// <returns>是否合法的bool值。</returns>
public static bool QuickValidate(string express, string value)
{
var myRegex = new System.Text.RegularExpressions.Regex(express);
return value.Length != && myRegex.IsMatch(value);
}

6.判断一个字符串是否为邮件:

        /// <summary>
/// 判断一个字符串是否为邮件
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public static bool IsEmail(string value)
{
var regex = new System.Text.RegularExpressions.Regex(@"^\w+([-+.]\w+)*@(\w+([-.]\w+)*\.)+([a-zA-Z]+)+$", RegexOptions.IgnoreCase);
return regex.Match(value).Success;
}

7.判断一个字符串是否为邮编:

        /// <summary>
/// 判断一个字符串是否为邮编
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public static bool IsZipCode(string value)
{
return QuickValidate("^([0-9]{6})$", value);
}

8.判断一个字符串是否为ID格式:

        /// <summary>
/// 判断一个字符串是否为ID格式
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public static bool IsIdCard(string value)
{
System.Text.RegularExpressions.Regex regex;
string[] strArray;
if ((value.Length != ) && (value.Length != 0x12))
{
return false;
}
if (value.Length == )
{
regex = new System.Text.RegularExpressions.Regex(@"^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$");
if (!regex.Match(value).Success)
{
return false;
}
strArray = regex.Split(value);
try
{
var dateTime = new DateTime(int.Parse("" + strArray[]), int.Parse(strArray[]), int.Parse(strArray[]));
return true;
}
catch
{
return false;
}
}
regex = new System.Text.RegularExpressions.Regex(@"^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9Xx])$");
if (!regex.Match(value).Success)
{
return false;
}
strArray = regex.Split(value);
try
{
var dateTime = new DateTime(int.Parse(strArray[]), int.Parse(strArray[]), int.Parse(strArray[]));
return true;
}
catch
{
return false;
}
}

9.判断是不是纯中文:

        /// <summary>
/// 判断是不是纯中文
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public static bool IsChinese(string value)
{
var regex = new System.Text.RegularExpressions.Regex(@"^[\u4E00-\u9FA5\uF900-\uFA2D]+$", RegexOptions.IgnoreCase);
return regex.Match(value).Success;
}

10.判断一个字符串是否为手机号码:

        /// <summary>
/// 判断一个字符串是否为手机号码
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public static bool IsMobileNum(string value)
{
var regex = new System.Text.RegularExpressions.Regex(@"^(13|15)\d{9}$", RegexOptions.IgnoreCase);
return regex.Match(value).Success;
}

11.判断一个字符串是否为电话号码:

        /// <summary>
/// 判断一个字符串是否为电话号码
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public static bool IsPhoneNum(string value)
{
var regex = new System.Text.RegularExpressions.Regex(@"^(86)?(-)?(0\d{2,3})?(-)?(\d{7,8})(-)?(\d{3,5})?$", RegexOptions.IgnoreCase);
return regex.Match(value).Success;
}

12.判断一个字符串是否为网址:

        /// <summary>
/// 判断一个字符串是否为网址
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public static bool IsUrl(string value)
{
var regex = new System.Text.RegularExpressions.Regex(@"(http://)?([\w-]+\.)*[\w-]+(/[\w- ./?%&=]*)?", RegexOptions.IgnoreCase);
return regex.Match(value).Success;
}

13.判断一个字符串是否为IP地址:

        /// <summary>
/// 判断一个字符串是否为IP地址
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public static bool IsIp(string value)
{
var regex = new System.Text.RegularExpressions.Regex(@"^(((2[0-4]{1}[0-9]{1})|(25[0-5]{1}))|(1[0-9]{2})|([1-9]{1}[0-9]{1})|([0-9]{1})).(((2[0-4]{1}[0-9]{1})|(25[0-5]{1}))|(1[0-9]{2})|([1-9]{1}[0-9]{1})|([0-9]{1})).(((2[0-4]{1}[0-9]{1})|(25[0-5]{1}))|(1[0-9]{2})|([1-9]{1}[0-9]{1})|([0-9]{1})).(((2[0-4]{1}[0-9]{1})|(25[0-5]{1}))|(1[0-9]{2})|([1-9]{1}[0-9]{1})|([0-9]{1}))$", RegexOptions.IgnoreCase);
return regex.Match(value).Success;
}

14.判断一个字符串是否为字母加数字:

       /// <summary>
/// 判断一个字符串是否为字母加数字
/// Regex("[a-zA-Z0-9]?"
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public static bool IsWordAndNum(string value)
{
var regex = new System.Text.RegularExpressions.Regex("[a-zA-Z0-9]?");
return regex.Match(value).Success;
}

以上的验证方法采用方法封装,在实际的项目中,可以将所有的方法封装在类中,方法都定义为静态方法,在项目中可直接调用其中的验证方法,可以极大的提升项目的开发速度。

DotNet项目中的一些常用验证操作的更多相关文章

  1. grails项目中(DB的相关操作)

    grails项目中(DB的相关操作) save:保存Domain对象的数据到对应的库表中(可能是insert也可能是update) findBy: 动态方法,查找并返回第一条记录,方法名可以变化 eg ...

  2. 在ASP.NET MVC项目中使用极验验证(geetest)

    时间 2016-03-02 18:22:37 smallerpig 原文  http://www.smallerpig.com/979.html 主题 ASP.NET MVC   geetest开发体 ...

  3. JAVA WEB项目中生成验证码及验证实例(附源码及目录结构)

    [我是一个初学者,自己总结和网上搜索资料,代码是自己敲了一遍,亲测有效,现将所有的目录结构和代码贴出来分享给像我一样的初学者] 作用 验证码为全自动区分计算机和人类的图灵测试的缩写,是一种区分用户是计 ...

  4. spring 项目中使用 hibernate validator验证输入参数

    1 hibernate validator 官方文档:https://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_si ...

  5. 如何在node和vue前后端分离的项目中使用极客验证,用node的方式

    1.用express的脚手架和vue-cli的脚手架搭建的项目目录如下图 2.在vue-client的src/component新建一个login.vue文件,作为登录页面,代码如下 <temp ...

  6. 【linux】工作中linux系统常用命令操作整理

    1.Linux如何查看端口 使用lsof(list open files)命令,lsof -i:端口号 用于查看某一端口的占用情况,比如查看8000端口使用情况,lsof -i:8000. 或者使用n ...

  7. 在C#项目中需要用double类型操作MSSQL float类型数据(附C#数据类型和SQL数据类型对照)

    C#操作SQL Float类型,数据会多很多小数,原来是C#的float和sql的float类型不一致.以下是数据库中与C#中的数据类型对照. /// <summary> /// 数据库中 ...

  8. [冲昏头脑]IDEA中的maven项目中学习log4j的日志操作

    第一,你要有log4j的对应的包,由于我用的maven,所以直接在pom.xml文件依赖下载则可,如你尚为有此包,请自行百度下载导入,或上http://www.mvnrepository.com/搜索 ...

  9. 关于在天机项目中遇到的常用git 命令

    1. 本地分支和远程分支 1>我们在本地创建分支,第一次push到远程是没有分支存在,执行git push 会有提示,按照提示的内容操作即可,当然我们也可以 git push origin fe ...

随机推荐

  1. C++哈夫曼树编码和译码的实现

    一.背景介绍: 给定n个权值作为n个叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree).哈夫曼树是带权路径长度最短的树,权值较大的 ...

  2. bzoj3048+3049+3050

    这套月赛题不是特别难 T1:离散化+单调队列,队列里出现数的种类不超过K+1,找最大的num[a[i]] T2:一眼可以看出BFS+状压DP,还要SPFA预处理出各个块之间的dis T3:线段树,没什 ...

  3. 内存不足时,调用ajax报的错

    在error中遍历出来的异常   很难见

  4. Linux下如何自己编译源代码(制作成可以安装的.deb文件)

    以tree实用程序(以树型结构获取目录树)为例,介绍Ubuntu中如何管理源码包,包括查询,获取,编译源码包,直至安装.   1) 在获取源码包之前,确保在软件源配置文件/etc/apt/source ...

  5. 分享基于Entity Framework的Repository模式设计(附源码)

    关于Repository模式,在这篇文章中有介绍,Entity Framework返回IEnumerable还是IQueryable? 这篇文章介绍的是使用Entity Framework实现的Rep ...

  6. HTML和CSS经典布局1

    如下图: 需求: 1. 如图 2. 可以从body标签开始. <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xht ...

  7. C#刨根究底:《你必须知道的.NET》读书笔记系列

    一.此书到底何方神圣? <你必须知道的.NET>来自于微软MVP—王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心 ...

  8. salesforce 零基础学习(四十六)动态美观显示列表中记录的审批状态

    项目中,申请者申请某些事项以后,常常需要在申请列表中查看当前申请的记录所在的审批状态,动态美观的显示状态可以使UI更符合客户要求,比如下面这样. 以Goods__c表为例,申请者申请的一些采购以前需要 ...

  9. json、javaBean、xml互转的几种工具介绍

    json.javaBean.xml互转的几种工具介绍 转载至:http://blog.csdn.net/sdyy321/article/details/7024236 工作中经常要用到Json.Jav ...

  10. HTML5_02之视频、音频、Canvas

    1.HTML5新特性之视频播放--video: ①例:<video src=""></video> ②video标签默认为300*150的inline-bl ...