在项目中需要对用户输入的信息,以及一些方法生成的结果进行验证,一般在项目中较多的采用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. FreeMarker中文API手册(完整)

    FreeMarker概述 FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写 FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用 ...

  2. css确定元素水平居中和垂直居中

    ---恢复内容开始--- 首先,我们在了解如何通过css了解元素水平和垂直居中之前,先要了解下html都有哪些元素,这些元素与偶有哪些分类,因为不同类别的元素的水平垂直居中方法是完全不同的,究其根本当 ...

  3. PHP好任性 —— 大小写敏感有两种规则,然而并没有什么特别原因

    大小写敏感 变量.常量大小写敏感 大小写不敏感 类名.方法名.函数名.魔法变量大小写不敏感 原因 有人原引了Rasmus 在一次会议上的发言大意: "I'm definitely not a ...

  4. 使用JDBC的批处理功能

    package cn.itcast.jdbc; import java.sql.Connection; import java.sql.Date; import java.sql.PreparedSt ...

  5. TaintDroid剖析之DVM变量级污点跟踪(下篇)

    TaintDroid剖析之DVM变量级污点跟踪(下篇)作者:简行.走位@阿里聚安全 ​ 1 回顾 在上一章节中我们详细分析了TaintDroid对DVM方法参数和方法变量的变量级污点跟踪机制,现在我们 ...

  6. CoreData教程

    网上关于CoreData的教程能搜到不少,但很多都是点到即止,真正实用的部分都没有讲到,而基本不需要的地方又讲了太多,所以我打算根据我的使用情况写这么一篇实用教程.内容将包括:创建entity.创建r ...

  7. 《CLR.via.C#第三版》第二部分第10,11章节读书笔记(五)

    第10章是对 属性 做阐述 属性本质上是方法 匿名类型的使用: }; Console.WriteLine("Name={0},Year={1}",o1.Name,o1.Year); ...

  8. 《Entity Framework 6 Recipes》中文翻译系列 (9) -----第二章 实体数据建模基础之继承关系映射TPH

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 2-10 Table per Hierarchy Inheritance 建模 问题 ...

  9. Android笔记——数据库升级与降级

    一.概述 SQLite是Android内置的一个很小的关系型数据库.SQLiteOpenHelper是一个用来辅助管理数据库创建和版本升级问题的抽象类.我们可以继承这个抽象类,实现它的一些方法来对数据 ...

  10. sql复习第五次

    1.在数据库范围内,关系的每一个属性值是不可分解的 关系中不允许出现重复元组 由于关系是一个集合,因此不考虑元组的顺序 2.笛卡儿积是两个关系的所有元组组合而成的,而等值联接是由笛卡儿积和选择运算组合 ...