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#中的正则表达式的更多相关文章

  1. PHP中有关正则表达式的函数集锦

    之前学正则表达式的目的是想从网上抓取点小说啊,文档啊,还有获取相应的视频连接然后批量下载.当时初学PHP根本不知道PHP有专门抓包的工具,就像Simple_html_dom.php(在我的其他博文中有 ...

  2. JavaScript中的正则表达式(终结篇)

    JavaScript中的正则表达式(终结篇) 在之前的几篇文章中,我们了解了正则表达式的基本语法,但那些语法不是针对于某一个特定语言的.这篇博文我们将通过下面几个部分来了解正则表达式在JavaScri ...

  3. Coursera-Getting and Cleaning Data-week4-R语言中的正则表达式以及文本处理

    博客总目录:http://www.cnblogs.com/weibaar/p/4507801.html Thursday, January 29, 2015 补上第四周笔记,以及本次课程总结. 第四周 ...

  4. 9.JAVA中的正则表达式

    一.JAVA中的正则表达式 1.概念:以某种特定的方式描述字符串 1.Java中正则表达式的规则 ?          #{0,1}-?有一个-或者没有 \\           #表示一个" ...

  5. Python::re 模块 -- 在Python中使用正则表达式

    前言 这篇文章,并不是对正则表达式的介绍,而是对Python中如何结合re模块使用正则表达式的介绍.文章的侧重点是如何使用re模块在Python语言中使用正则表达式,对于Python表达式的语法和详细 ...

  6. 工作随笔——UIButton的EdgeInsets + Swift中的正则表达式;

    1.UIButton的EdgeInsets UIButton的EdgeInsets方法,是用来设置title和image对于上左下右四个方向的偏移,但是很奇怪的是,刚开始只有Image,titile也 ...

  7. Javascript中的正则表达式

    Javascript中的正则表达式 刚开始接触正则表达式的时候,觉得这是个很死板的东西(没办法,计算机不能像人眼一样能很快的辨认出我们需要的结果,它需要一定的规则来对它进行限制),了解的越多,发现这个 ...

  8. 在Visual Studio中使用正则表达式匹配换行和批量替换

    系统环境:Windows 8.1 Enterprise Update 2 x64 开发环境:Mircosoft Visual Studio Ultimate 2013 Update 2 RC 问题:如 ...

  9. 浅谈JavaScript中的正则表达式

    引言 对于正则表达式我想作为程序员肯定使用过它,那天书般的表达方式,我用一次就记住它了.这篇博客先介绍一些正则表达式的内容,然后介绍JavaScript中对正则表达式特有的改进.下面开始介绍正则表达式 ...

  10. 任督二脉之Shell中的正则表达式

    VBird说学习Linux,掌握了Shell和正则就相当于打通了任督二脉,此后能力的成长才会突飞猛进. Shell的基础学习之前已经总结了一篇博客:http://www.cnblogs.com/jyz ...

随机推荐

  1. 一个App完成入门篇(三)-完善主框架

    本节教程将继续带领大家完善教学demo 导入项目 完善主框架 完成viewShower子视图 打开新页 启动动画 将要学习的demo效果图如下所示 1. 如何导入完整项目 本节示例demo请参考下载地 ...

  2. 这里有个坑---[NotMapped]不要忘了加

    这里有个坑,我们定义实体的时候如果使用了在数据库没有的字段记得加[NotMapped]---------每一个遇到的坑总结后都是一比财富. 在项目中我们一般会使用EF等ORM框架来为我们服务,在ORM ...

  3. 分离EF connectionString里的db连接串

    创建EF模型后,自动生成的connectionString如下: <add name="TravelPPEntities" connectionString="me ...

  4. js模仿新浪微博限制字数输入

    功能:实现新浪微博输入字数提醒功能:最多输入140个字,当输入字时,上面提示部分字数发生变化,如果字数小于25,字体颜色变红:当可输入字数为0时,强制不能输入,如果用中文输入法 一次性输入很多字,那么 ...

  5. Atitit 作用域的理解attilax总结

    Atitit 作用域的理解attilax总结 1.1. 作用域是指对某一变量和方法具有访问权限的代码空间, 1 1.2. 作用域的使用提高了程序逻辑的局部性,增强程序的可靠性,减少名字冲突.1 1.3 ...

  6. Atitit 团队建设的知识管理

    Atitit 团队建设的知识管理 1.1. 要遵循"知识积累--创造--应用--形成知识平台--再积累--再创造--再应用--形成新的知识平台"的循环过程.1 1.2. 显性知识包 ...

  7. JSP连接mysql数据库的重点

    1:用mysql驱动把mysql与tomcat的连接起来.把mysql驱动包(不用解压)放到Tomcat安装目录中lib文件夹下即可. 2:然后在自己的新建的web应用程序上面就可以下下面的代码 3: ...

  8. Java学习第一天

    Java学习第一天 对于网络管理员或者黑客必须知道的八个cmd命令 详情请参考:http://www.2cto.com/os/201608/533964.html          nbtstat  ...

  9. HTML基础笔记-01

    ---恢复内容开始--- 学习网站:W3School 1.基础知识 目录: <1.我的文档—> 选择目录名—> 主页—> 样式(点击标题样式,选择你想要的每个标题,重复此步骤) ...

  10. Mybatis中SqlMapper配置的扩展与应用(3)

    隔了两周,首先回顾一下,在Mybatis中的SqlMapper配置文件中引入的几个扩展机制: 1.引入SQL配置函数,简化配置.屏蔽DB底层差异性 2.引入自定义命名空间,允许自定义语句级元素.脚本级 ...