在项目中需要对用户输入的信息,以及一些方法生成的结果进行验证,一般在项目中较多的采用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. [原创]MySQL RR隔离级别下begin或start transaction开启事务后的可重复读?

    Server version:         5.6.21-log MySQL Community Server (GPL) 前提提要: 我们知道MySQL的RR(repeatable read)隔 ...

  2. MIME(多用途互联网邮件扩展类型)

    MIME对照表 百度百科 MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型.(百度百科).是设定某种扩展名的文件用一种应用程序来打开的方式 ...

  3. Java概念性问题

    一.变量命名的五个要素 由字母.数字.“_”和“$” 组成 首字母不能为数字 大小写敏感 不能使用Java的保留字和关键字 可以使用中文命名,但是不建议 二.java的基本数据类型 整数类型:byte ...

  4. 华为oj 挑7

    #include<iostream> using namespace std; bool ishave_7(int n); int main(){ int num,k=0; cin> ...

  5. Java中有关Null的9件事

    对于Java程序员来说,null是令人头痛的东西.时常会受到空指针异常 (NPE)的骚扰.连Java的发明者都承认这是他的一项巨大失误.Java为什么要保留null呢?null出现有一段时间了,并且我 ...

  6. JQM (功能栏、导航条)

    在Mobile中导航条的基本结构: <div data-role="navbar"> ul>li>a </div> 其中含有“行(grid)”和 ...

  7. 认真分析mmap:是什么 为什么 怎么用

    mmap基础概念 mmap是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系.实现这样的映射关系后,进程就可以采用指 ...

  8. MVC学习二:基础语法

    目录 一:重载方法的调用 二:数据的传递 三:生成控件 四:显示加载视图 五:强类型视图 六:@Response.Write() 和 @Html.Raw()区别 七:视图中字符串的输入 八:模板页 一 ...

  9. 删除Mysql数据表中多余的重复记录的sql语句

    数据表 sniper_tb 中存在主键 id,字段url,现需要在url字段上添加 unique,但由于url存在重复记录,导致添加失败. 如何删除表中多余的url重复记录,仅保持一条? 思路一 将 ...

  10. Web高级征程:《大型网站技术架构》读书笔记系列

    一.此书到底何方神圣? <大型网站技术架构:核心原理与案例分析>通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计 ...