网上经常看到用正则表达式校验数据的文章,有的虽然总结得很全,但是大多数都没有经过严格验证,错误较多。

本文包含三十余条不同格式数据校验的C#正则表达式,一般均附有说明,且在Visual Studio里面跑过。

正则表达式基本规则对照表:

推荐一个不错的网站:在线正则表达式测试

/*
说明:
1、下面的正则都是以^开头,以$结尾,说明是把整个字符串拿来匹配。
2、下面的正则表达式前都应该加@,例如:bool reg = Regex.IsMatch("35_ab", @"^[0-9a-zA-Z_]{1,}$");
3、左括号和右括号不要滥用。
4、形如[0-9]这样的表示中最好不要有空格,例如不宜写成[0 - 9]。

*/

可以用下面的控制台程序进行正则表达式的验证:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions; namespace Console_regex
{
class Program
{
static void Main(string[] args)
{ bool l = Regex.IsMatch("_65_", @"^[0-9a-zA-Z_]{1,}$"); if (l ==true)
{
Console.WriteLine("匹配正确");
} else
{
Console.WriteLine("匹配错误");
} Console.ReadKey();
}
}
}
.由数字、26个英文字母或者下划线组成的字符串:
^[-9a-zA-Z_]{,}$ .非负整数(正整数+): +表示出现重复1次或多次
^\d+$ .正整数:中间的[ - ] 后面没有*,说明至少有一位1到9的数字
^[-]*[ - ][ - ]*$ .非正整数(负整数 + ):|是或运算,也可以将最外面的一层()剥掉,写作^(-\d+)|(+)$
^((-\d+)|(+))$ .负整数 :由于中间那个[ - ] 后面没有*,所以至少有一个1到9之间的数,所以-0000这样的数据也不能通过
^-[-]*[ - ][ - ]*$ .整数: 由于-后面有?(表示重复0次或1次),所以-号是可有可无的,因此可以表示全体整数
^-?\d+$ .正整数或非负浮点数(正浮点数 + ):+表示出现重复1次或多次,? 表示重复0次或1次
^\d+(\.\d+)?$ .正浮点数 :匹配三类,包括0.、.0987以及00100.0987的形式,主要考虑不能含0,即没有00.000这种
^([-]+\.[-]*[ - ][ - ]*)|([-]*[ - ][ - ]*\.[-]+)$ .非正浮点数(负浮点数 + ):前面匹配负浮点数和形如-.000这样的0,后面匹配0和0.00这样的0,? 表示重复0次或1次
^((-\d+(\.\d+)?)|(+(\.+)?))$ .负浮点数 :中间这个或运算|是否需要呢?
^-(([-]+\.[-]*[-][-]*)|([-]*[-][-]*\.[-]+))$ .浮点数 :不对,感觉应该是^-?\d+\.\d+$
^(-?\d+)(\.\d+)?$ .由26个英文字母组成的字符串 : +表示出现重复1次或多次
^[A-Za-z]+$ .由26个英文字母的大写组成的字符串 :
^[A-Z]+$ .由26个英文字母的小写组成的字符串 :
^[a-z]+$ .由数字和26个英文字母组成的字符串 :[A-Za-z0-]中是或的关系,也就是只要出现大写字母、小写字母或数字都行
^[A-Za-z0-]+$ .由数字、26个英文字母、汉字或者下划线组成的字符串 : 匹配字母或数字或下划线或汉字,注意不能有空格或其他特殊字符
^\w+$ .email地址 :匹配xh6300@.com和xh.tuce @qq.com这两类格式的邮箱(.不同),且可以有中文和短横杠-,注意中括号里的项是或的关系
^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$ .url: url的开头可以是http或者ftp、file等,url中可以有短横杠-,\? 是对问号的转义,\S(\s的反义)匹配任意不是空白符的字符
^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$ .电话号码:开头3或4位数字或者不写,短横杠-写或者不写,后面7或8位数字
^(\d{,}-?)?\d{,}$ .IP地址:匹配思想是先匹配XXX,再将.XXX重复3次
^([-]|[-]
[-]|[-]
[-]|[-]{,})(\.([-]|[-]
[-]|[-]
[-]|[-]{,})){}$ .匹配中文字符的正则表达式:不含中文标点。如果只判断字符串是否含中文(而不要求全部由中文组成),可以写作[\u4e00-\u9fa5]
^[\u4e00-\u9fa5]+$ .匹配首或尾空格的正则表达式:
^(\s)|(\s)$ .匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):
^[a-zA-Z][a-zA-Z0-9_]{,}$ .匹配腾讯QQ号:一般的QQ号最少5位,最多11位,首位不能为0
^[-][-]{,}$ .只能输入数字:
^[-]+$ .只能输入n位的数字:
^\d{n}$ .只能输入至少n位的数字:
^\d{n,}$ .只能输入m ~n位的数字:
^\d{m,n}$ .只能输入零和非零开头的数字:这个正则不支持00或者002这样的数据
^(|[-][-]*)$ .只能输入有两位小数的正实数:
^[-]+\.[-]{}$ .只能输入有1~3位小数的正实数:
^[-]+\.[-]{,}$ .只能输入非零的正整数:支持45或者+4895这样的表示,不支持+09或者0087这样的表示
^\+?[-][-]*$ .只能输入非零的负整数:不支持-098这样的表示
^\-[-][-]*$ .只能输入长度为3的字符串:支持“我爱你”这3个汉字的字符串,一个汉字是一个字符
^.{}$ .只能输入由数字和26个英文字母组成的字符串:
^[A-Za-z0-]+$ .只能输入由数字和26个英文字母、下划线或汉字组成的字符串:\w表示匹配字母或数字或下划线或汉字
^\w+$ .验证是否包含有 %&',;=?$\"等字符:输入09&输出是true,因为含有&,如果要验证字符^该怎么办?^表示取反
[%&',;=?$\\]+

1、由数字、26个英文字母、下划线或汉字的正则表达式

2、正则表达式30分钟入门教程

C#中不同格式数据校验的正则表达式的更多相关文章

  1. python中json格式数据输出实现方式

    python中json格式数据输出实现方式 主要使用json模块,直接导入import json即可. 小例子如下: #coding=UTF-8 import json info={} info[&q ...

  2. Go net/http获取body中json格式数据

    Go net/http获取body中json格式数据 package main import ( "encoding/json" "fmt" "io/ ...

  3. jmeter 导入csv数据中json格式数据取值不完整

    1.jmeter中添加csv数据文件时,数据是json格式 2.jmeter中执行取值发现只取了一部分 分析原因,json格式数据,中间有逗号,而csv是根据逗号来分割的,这回导致我们取值错位. 解决 ...

  4. HADOOP中的CRC数据校验文件

    Hadoop系统为了保证数据的一致性,会对文件生成相应的校验文件(.crc文件),并在读写的时候进行校验,确保数据的准确性.在本地find -name *.crc -print 看 比如我们遇到的这个 ...

  5. Android中XML格式数据的简单使用

    源码: package com.wangzhu.demo; import java.io.IOException; import java.io.StringWriter; import javax. ...

  6. StringMVC 中如何做数据校验

    步骤一:引入四个jar包 步骤二:注册类型转换器 <context:component-scan base-package="cn.happy.controller"> ...

  7. js中JSON格式数据的转化

    JSON.parse(STRING) => OBJECT JSON.stringify(OBJECT) => STRING

  8. ajax中json格式数据如何朝后端发送数据

  9. SilverlightMVVM模式中的数据校验

    silverlight的数据校验大体分成3种类型: 数据是非必填的但是需要满足相应数据格式的 数据是必填的且可能需要进行数据格式校验的 其他(如数据的联动校验) 以下的数据校验方式针对第二种: 在相应 ...

随机推荐

  1. Codeforces Round #204 (Div. 2) C. Jeff and Rounding——数学规律

    给予N*2个数字,改变其中的N个向上进位,N个向下进位,使最后得到得数与原来数的差的绝对值最小 考虑小数点后面的数字,如果这些数都非零,则就是  abs(原数小数部分相加-1*n), 多一个0 则 m ...

  2. sourceTree 添加 ssh key 方法【转】

    1.使用 git 客户的生成公私钥:id_rsa.id_rsa.pub 1.1设置Git的user name和email: $ git config --global user.name " ...

  3. EMguCV搭建第一个程序

    这篇博客旨在教学Emgucv3.0的安装与配置. 环境:vs2013+Emgucv3.0 Emgu Cv简介: Emgu CV 是.NET平台下对OpenCV图像处理库的封装.也就是opencv的.N ...

  4. 手动封装OpenCV1.0的IplImage读取保存功能遇到的小问题

    最近准备重新学习图像处理的知识,主要目的是自己实现一遍图像处理的算法,所以除了读取.保存图像外的操作都自己写,没想到直接封装OpenCV的读取.保存功能的第一步就出错.关键代码如下 void MyIm ...

  5. NOIP2013 Day1

    1.转圈游戏 https://www.luogu.org/problem/show?pid=1965 这道题失误极大,把freopen注释掉了,导致第一题暴0. 注意:在考试时一定要留下最后的时间检查 ...

  6. JDBC--数据库链接及相关方法的封装

    使用的是MySQL数据库,首先导入驱动类,然后根据数据库URL和用户名密码获得数据的链接.由于使用的是MySQL数据库,它的URL一般为,jdbc:mysql://主机地址:端口号/库名. 下面是封装 ...

  7. OSGi学习-总结

    本文是osgi实战一书的前几章读书总结 1.  OSGi简介 Java缺少对高级模块化的支持,为了弥补Java在模块化方面的不足,大多数管理得当的项目都会要求建立一整套技术,包括: 适应逻辑结构的编程 ...

  8. MySql命令集合

    1.mysql命令用户连接数据库 mysql命令格式: mysql -h主机地址 -u用户名 -p用户密码 (1) 连接到本机上的MYSQL 首先打开DOS窗口,然后进入目录mysql\bin,再键入 ...

  9. python基础知识之列表、元祖、字典、集合、字符串。

    1.可变类型之列表 列表用 [ ]来定义是可变的,可以通过索引值来去查询里面的字段可以可以追加,删除等 names='zhangyang guyun xiangpeng xuliangwei' nam ...

  10. js中的web加密

    js中的web加密 window.crypto.subtle只会在安全模式下有用,也就是https环境下 创建摘要(硬解) var i = new TextEncoder('utf-8').encod ...