c#中的正则表达式
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace 正则表达式
{
using System.Text.RegularExpressions;//正则表达式的命名空间
class Program
{
static void Main(string[] args)
{
/*
* 正则的匹配原则:
* 1.只关注有没有能够进行匹配的字符串,而不关注它的位置,及其它不能匹配的部分。
* 2.贪婪模式:正则会尽可能多的进行匹配,也就意味着它会匹配到能够进行匹配的最后一个字符串
*/
while(true)
{
string str = Console.ReadLine();
#region 元字符_占位符
//方法的作用是 判断str是否匹配 自定义的正则表达式规则
//1. .:代表一个字符占位,可以代表任意一个字符,必须传入一个字符,可以是中文
Console.WriteLine(Regex.IsMatch(str, "b.g"));
//2.[]:代表一个指定范围的单个字符,你可以指定间断的值,也可以指定连续的范围: 0-9 A-Z a-z 合法字符:0-9 A-Z a-z _
Console.WriteLine(Regex.IsMatch(str, "b[0-9]g"));
//在正则里面,^只能写在开头,如果在中间写,^就是一个普通的字符了
Console.WriteLine(Regex.IsMatch(str, "b[0-9A-Z^a-z_]g"));
Console.WriteLine(Regex.IsMatch(str, "b[^0-9A-Za-z_^]g"));
//这里[0-z]会包含0-z之间的所有字符,也包含一些特殊符号
//正在分析“b[9-1]g”- [x-y] 范围的顺序颠倒。 只能按ASCII码的顺序从小到大
Console.WriteLine(Regex.IsMatch(str, "b[9-1]g"));
Console.WriteLine(Regex.IsMatch(str, "b[0-9-]g"));
// 11-19
Console.WriteLine(Regex.IsMatch(str, "[11-19]")); // 1 1-1 9
Console.WriteLine(Regex.IsMatch(str, "b[^0-9]g"));
// |:或者
Console.WriteLine(Regex.IsMatch(str, "[0-9][0-9]|[0-9][0-9][0-9]")); //hjasdgf1234fjhadsjfhas
// 如果涉及到严格的位数匹配,就需要添加 开始 ^和结束$:代表字符从开始到结束必须严格的匹配正则
Console.WriteLine(Regex.IsMatch(str, "^[0-9][0-9]$|^[0-9][0-9][0-9]$"));
//包含在[]里面的都是普通字符,而不是元字符,除了^--需要后面有内容,如果需要匹配,则可以考虑使用转义\
Console.WriteLine(Regex.IsMatch(str, @"^\^$"));
Console.WriteLine(Regex.IsMatch(str, "^\\^$"));
#endregion #region 元字符_修饰符
// *:它不是一个字符占位,说明它本身并不代表一个字符,它是用来修饰 *前面的子表达式出现0次或者多次:子表达式就是默认指*前面的那一个字符,如果需要代表多个,就使用()包含
Console.WriteLine(Regex.IsMatch(str, "ab*g"));
Console.WriteLine(Regex.IsMatch(str, "^(ab)*g$"));
//+:它不是一个字符占位,说明它本身并不代表一个字符,它是用来修饰 +前面的子表达式出现1次或者多次:子表达式就是默认指+前面的那一个字符,如果需要代表多个,就使用()包含
Console.WriteLine(Regex.IsMatch(str, "a+g"));
//? :它不是一个字符占位,说明它本身并不代表一个字符,它是用来修饰 ?前面的子表达式出现0次或者1次:子表达式就是默认指?前面的那一个字符,如果需要代表多个,就使用()包含
Console.WriteLine(Regex.IsMatch(str, "^a?g$"));
// {n,m}:{n,m}它不是一个字符占位,说明它本身并不代表一个字符,它是用来修饰{n,m}前面的子表达式最少出现n次,最多出现m次
Console.WriteLine(Regex.IsMatch(str, "^[0-9]{3,4}$"));
//{n}:它不是一个字符占位,说明它本身并不代表一个字符,它是用来修饰{n}前面的子表达式只能出现n次
Console.WriteLine(Regex.IsMatch(str, "^[1-9][0-9]{17}$|^[0-9]{15}$|^[0-9]{17}[xX]$"));
//{n,}:它不是一个字符占位,说明它本身并不代表一个字符,它是用来修饰{n,}前面的子表达式最少出现n次,最多没有限制
Console.WriteLine(Regex.IsMatch(str, "^[0-9]{3,}$"));
Console.WriteLine(Regex.IsMatch(str, "^q*$"));
#endregion //在c#中判断登录名是是否包含特殊符号:[^0-9A-Za-z_] :也不能包含中文
#region 简写表达式
//\d:代表一个数字,等同于[0-9]
Console.WriteLine(Regex.IsMatch(str, @"^\d{3,}$"));
//\D:非数字
Console.WriteLine(Regex.IsMatch(str, @"\D"));
//\s:空字符:空格,制表位,换行
Console.WriteLine(Regex.IsMatch(str, @"\s"));
//\S:非空白字符
Console.WriteLine(Regex.IsMatch(str, @"\S"));
// \w:[0-9 a-z A-Z _ 中文]
Console.WriteLine(Regex.IsMatch(str, @"\w"));
//\W:除了[0-9 a-z A-Z _ 中文]之外的特殊符号
Console.WriteLine(Regex.IsMatch(str, @"\W"));
#endregion
} //判断字符串是否为正确的国内电话号码,不考虑分机。
//010-8888888或010-88888880或010xxxxxxx
//0335-8888888或0335-88888888(区号-电话号)
//10086、10010、95595、95599、95588(5位)
//13888888888(11位都是数字)
while (true)
{
string str = Console.ReadLine();
//不要试图一步到位,应该一个一个来进行匹配
Console.WriteLine(Regex.IsMatch(str,@"^\d{3,4}[-]?\d{7,8}$|^[1-9]\d{4}$|^1[3-9]\d{9}$"));
} //验证用户输入的电子邮箱的合法性 wuhu0723@126.com
while (true)
{
string str = Console.ReadLine();
//不要试图一步到位,应该一个一个来进行匹配
Console.WriteLine(Regex.IsMatch(str, @"^[0-9A-Za-z_]+[@][0-9A-Za-z_]+[.][A-Za-z]{2,5}$"));
}
}
}
}
c#中的正则表达式的更多相关文章
- PHP中有关正则表达式的函数集锦
之前学正则表达式的目的是想从网上抓取点小说啊,文档啊,还有获取相应的视频连接然后批量下载.当时初学PHP根本不知道PHP有专门抓包的工具,就像Simple_html_dom.php(在我的其他博文中有 ...
- JavaScript中的正则表达式(终结篇)
JavaScript中的正则表达式(终结篇) 在之前的几篇文章中,我们了解了正则表达式的基本语法,但那些语法不是针对于某一个特定语言的.这篇博文我们将通过下面几个部分来了解正则表达式在JavaScri ...
- Coursera-Getting and Cleaning Data-week4-R语言中的正则表达式以及文本处理
博客总目录:http://www.cnblogs.com/weibaar/p/4507801.html Thursday, January 29, 2015 补上第四周笔记,以及本次课程总结. 第四周 ...
- 9.JAVA中的正则表达式
一.JAVA中的正则表达式 1.概念:以某种特定的方式描述字符串 1.Java中正则表达式的规则 ? #{0,1}-?有一个-或者没有 \\ #表示一个" ...
- Python::re 模块 -- 在Python中使用正则表达式
前言 这篇文章,并不是对正则表达式的介绍,而是对Python中如何结合re模块使用正则表达式的介绍.文章的侧重点是如何使用re模块在Python语言中使用正则表达式,对于Python表达式的语法和详细 ...
- 工作随笔——UIButton的EdgeInsets + Swift中的正则表达式;
1.UIButton的EdgeInsets UIButton的EdgeInsets方法,是用来设置title和image对于上左下右四个方向的偏移,但是很奇怪的是,刚开始只有Image,titile也 ...
- Javascript中的正则表达式
Javascript中的正则表达式 刚开始接触正则表达式的时候,觉得这是个很死板的东西(没办法,计算机不能像人眼一样能很快的辨认出我们需要的结果,它需要一定的规则来对它进行限制),了解的越多,发现这个 ...
- 在Visual Studio中使用正则表达式匹配换行和批量替换
系统环境:Windows 8.1 Enterprise Update 2 x64 开发环境:Mircosoft Visual Studio Ultimate 2013 Update 2 RC 问题:如 ...
- 浅谈JavaScript中的正则表达式
引言 对于正则表达式我想作为程序员肯定使用过它,那天书般的表达方式,我用一次就记住它了.这篇博客先介绍一些正则表达式的内容,然后介绍JavaScript中对正则表达式特有的改进.下面开始介绍正则表达式 ...
- 任督二脉之Shell中的正则表达式
VBird说学习Linux,掌握了Shell和正则就相当于打通了任督二脉,此后能力的成长才会突飞猛进. Shell的基础学习之前已经总结了一篇博客:http://www.cnblogs.com/jyz ...
随机推荐
- 浅析Ajax跨域原理及JQuery中的实现分析
AJAX 的出现使得网页可以通过在后台与服务器进行少量数据交换,实现网页的局部刷新.但是出于安全的考虑,ajax不允许跨域通信.如果尝试从不同的域请求数据,就会出现错误.如果能控制数据驻留的远程服务器 ...
- 常用的HTML5、CSS3新特性能力检测写法
伴随着今年10月底HTML5标准版的发布,未来使用H5的场景会越来越多,这是令web开发者欢欣鼓舞的事情.然而有一个现实我们不得不看清,那就是IE系列浏览器还占有一大部分市场份额,以IE8.9为主,w ...
- DISCUZ 自定义模板
DISCUZ 自定义模板 模板安装和维护 安装新模板 将模板template打包放在对应目录:template/ 后台 -> 界面 -> 风格管理 , 安装模板 后台 -> 界面 - ...
- 绝对干货:自定义msi安装包的执行过程
有时候我们需要在程序中执行另一个程序的安装,这就需要我们去自定义msi安装包的执行过程. 比如我要做一个安装管理程序,可以根据用户的选择安装不同的子产品.当用户选择了三个产品时,如果分别显示这三个产品 ...
- redis中使用java脚本实现分布式锁
转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/115.html?1455860390 edis被大量用在分布式的环境中,自 ...
- 我心中的核心组件(可插拔的AOP)~第十三回 实现AOP的拦截组件Unity.Interception
回到目录 说在前 本节主要说一下Unity家族里的拦截组件,对于方法拦截有很多组件提供,基本上每个Ioc组件都有对它的实现,如autofac,它主要用在orchard项目里,而castle也有以拦截的 ...
- PsySH:PHP交互运行环境
是什么 我们经常会在命令行用到诸如mysql.python等命令,特点是一旦输入后,会进入命令本身的交互运行环境.示例: [root@iZ25vs3mckhZ ~]# python Python 2. ...
- php-fpm进程数优化
php-fpm未优化网友反映的问题 1.最近将Wordpress迁移至阿里云.由于自己的服务器是云服务器,硬盘和内存都比较小,所以内存经常不够使,通过ps ax命令查看后,发现启动php-fpm进程数 ...
- 第1讲 Redis部署与基本操作
目录 一.简介 二.安装 1.默认安装位置 2.指定安装位置 3.安装的可执行文件的作用 三.启动与关闭 四.配置文件 五.Redis的数据类型 1. 共计5种类型 2. String(子串类型) 3 ...
- 20_学生选课数据库SQL语句练习题1
25.查询95033班和95031班全体学生的记录. select * from STUDENT t,SCORE s where t.sclass=95033 or t.sclass=95031 26 ...