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 ...
随机推荐
- hadoop rpc基础
第一部分: hadoop rpc基础 RPC,远程程序调用,分布式计算中C/S模型的一个应用实例. 同其他RPC框架一样,Hadoop分为四个部分: 序列化层:支持多种框架实现序列化与反序列化 函数调 ...
- 开源中国(oschina)的Git托管
一些废话 对于使用CVS/SVN出身的人来说,Git始终有点难上手(比如我),因为概念较多,一时理不清,尽管网上已经有很多教程,其实后来我发现,要掌握它的办法就是使用它,着手开始用它做源码管理,有问题 ...
- MySQL--使用xtrabackup进行备份还原
使用rpm包安装xtrabackup ## 安装依赖包 yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl- ...
- 用Python编写博客导出工具
用Python编写博客导出工具 罗朝辉 (http://kesalin.github.io/) CC 许可,转载请注明出处 写在前面的话 我在 github 上用 octopress 搭建了个人博 ...
- Visual Studio 2015速递(3)——ASP.NET 新特性
系列文章 Visual Studio 2015速递(1)——C#6.0新特性怎么用 Visual Studio 2015速递(2)——提升效率和质量(VS2015核心竞争力) Visual Studi ...
- Ajax跨域访问XML数据的另一种方式——使用YQL查询语句
XML数据默认是不能在客户端通过Ajax跨域请求读取的,一般的做法是在服务器上写一个简单的代理程序,将远程XML的数据先读到本地服务器,然后客户端再从本地服务器通过Ajax来请求.由于我们不能对数据源 ...
- 案例研究:CopyToAsync
返回该系列目录<基于Task的异步模式--全面介绍> 把一个流拷贝到另一个流是有用且常见的操作.Stream.CopyTo 方法在.Net 4中就已经加入来满足要求这个功能的场景,例如在一 ...
- nanoTime对volatile 测试的一种写法
今天脑筋有点搭牢,想了半天才看出为什么以下两段代码效果是相同的... 第一种好处是可以直接批量复制黏贴system.out, 不用改什么东西 private static long i; priv ...
- 将不确定变成确定~Uri文本文件不用浏览器自动打开,而是下载到本地
回到目录 这个标题有点长,简单来说就是,对于一个文件下载来说,是否可以提示用户,让它去保存,而不是将它在浏览器中打开,在浏览器中打开有个致命问题,那就是,如果你的页面编码和文件的编码不一致时,打开的就 ...
- tabs左右滚动
$(function () { //IdivLeft小于0,说明左边还有菜单,菜单总数大于8 //IdivLeft等于0,说明菜单总数小于8 //IdivLeft大于0,说明右边还有菜单,菜单总数大于 ...