DotNet项目中的一些常用验证操作
在项目中需要对用户输入的信息,以及一些方法生成的结果进行验证,一般在项目中较多的采用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项目中的一些常用验证操作的更多相关文章
- grails项目中(DB的相关操作)
grails项目中(DB的相关操作) save:保存Domain对象的数据到对应的库表中(可能是insert也可能是update) findBy: 动态方法,查找并返回第一条记录,方法名可以变化 eg ...
- 在ASP.NET MVC项目中使用极验验证(geetest)
时间 2016-03-02 18:22:37 smallerpig 原文 http://www.smallerpig.com/979.html 主题 ASP.NET MVC geetest开发体 ...
- JAVA WEB项目中生成验证码及验证实例(附源码及目录结构)
[我是一个初学者,自己总结和网上搜索资料,代码是自己敲了一遍,亲测有效,现将所有的目录结构和代码贴出来分享给像我一样的初学者] 作用 验证码为全自动区分计算机和人类的图灵测试的缩写,是一种区分用户是计 ...
- spring 项目中使用 hibernate validator验证输入参数
1 hibernate validator 官方文档:https://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_si ...
- 如何在node和vue前后端分离的项目中使用极客验证,用node的方式
1.用express的脚手架和vue-cli的脚手架搭建的项目目录如下图 2.在vue-client的src/component新建一个login.vue文件,作为登录页面,代码如下 <temp ...
- 【linux】工作中linux系统常用命令操作整理
1.Linux如何查看端口 使用lsof(list open files)命令,lsof -i:端口号 用于查看某一端口的占用情况,比如查看8000端口使用情况,lsof -i:8000. 或者使用n ...
- 在C#项目中需要用double类型操作MSSQL float类型数据(附C#数据类型和SQL数据类型对照)
C#操作SQL Float类型,数据会多很多小数,原来是C#的float和sql的float类型不一致.以下是数据库中与C#中的数据类型对照. /// <summary> /// 数据库中 ...
- [冲昏头脑]IDEA中的maven项目中学习log4j的日志操作
第一,你要有log4j的对应的包,由于我用的maven,所以直接在pom.xml文件依赖下载则可,如你尚为有此包,请自行百度下载导入,或上http://www.mvnrepository.com/搜索 ...
- 关于在天机项目中遇到的常用git 命令
1. 本地分支和远程分支 1>我们在本地创建分支,第一次push到远程是没有分支存在,执行git push 会有提示,按照提示的内容操作即可,当然我们也可以 git push origin fe ...
随机推荐
- LabVIEW 吸星大法 - 看见的好东西都是我的(下篇)
前言 写了多年的LabVIEW程序,你是否面临这样的问题 总是在做一些重复的工作,感觉很没有意思: 总在不停的写代码,做类似的控件,实现相同的功能,丝毫没有成就感: 总在天加班,没有时间去提高自己; ...
- Silverlight 使用DataContractJsonSerializer序列化与反序列化 Json
环境说明:Silverlight 5.1,.Net Framework 4.0 1.添加引用System.ServiceModel.Web.dll. 因为 System.Runtime.Seria ...
- HTML基础篇之内嵌框架和表单
内嵌框架: <iframe src="http://www.baidu.com" name="d"></iframe> 网页会显示一个这 ...
- Raft 为什么是更易理解的分布式一致性算法
一致性问题可以算是分布式领域的一个圣殿级问题了,关于它的研究可以回溯到几十年前. 拜占庭将军问题 Leslie Lamport 在三十多年前发表的论文<拜占庭将军问题>(参考[1]). 拜 ...
- NodeJS入门(五)—— process对象
process对象用于处理与当前进程相关的事情,它是一个全局对象,可以在任何地方直接访问到它而无需引入额外模块. 它是 EventEmitter 的一个实例. 本章的示例可以从我的Github上下载到 ...
- ENode框架Conference案例分析系列之 - 上下文划分和领域建模
前面一片文章,我介绍了Conference案例的核心业务,为了方便后面的分析,我这里再列一下: 业务描述 Conference是这样一个系统,它提供了一个在线创建会议以及预订会议座位的平台.这个系统的 ...
- 《HiWind企业快速开发框架实战》(2)使用HiWind创建自己的项目
<HiWind企业快速开发框架实战>(2)使用HiWind创建自己的项目 关于HiWind HiWind企业快速开发框架,是基于.NET+EasyUi(支持各种前端扩展,后面将扩展Boot ...
- 你get了无数技能,为什么一事无成
前几日看到阮一峰老师的发的一句话,颇有感慨,「你只是坐在电脑前,往网上发表了一段文字或者一张图片,随便什么,就能够接触到多少陌生的灵魂.这就是我热爱互联网的原因」.我打心底认为这是一个最好的时代, ...
- JWS.Mono如何进行“在线安装”
这里话就不多说了,使用方法如下: wget http://jhonge.net/down4load/1413998270361/jwsmono_net.sh chmod a+x jwsmono_net ...
- [CORS:跨域资源共享] 同源策略与JSONP
Web API普遍采用面向资源的REST架构,将浏览器最终执行上下文的JavaScript应用Web API消费者的重要组成部分."同源策略"限制了JavaScript的跨站点调用 ...