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. Github教程(0)

    Git下载:https://git-for-windows.github.io/ 我下载的版本是:Git-2.6.3-64-bit.exe 安装:略 默认选项点击"下一步"即可 安 ...

  2. 犀利的background-clip:text,实现K歌字幕效果

    今天学到了一个新的CSS3属性,更准确的说是属性值,那就是background-clip:text.利用此属性值可以制作出很神奇的效果.可惜只有chrome支持,不过今天可以先来玩玩这个属性. 先来介 ...

  3. 渣渣小本求职复习之路每天一博客系列——Unix&Linux入门(5)

    前情回顾:昨天简单地介绍了一下如何使用vi编辑器,例如命令模式和插入模式的切换,以及一些简单命令的讲解. —————————————————————————直接就开始吧———————————————— ...

  4. 把 Notepad++ 打造成一款易用的C#脚本编辑器

    以前一直用Linqpad在写小程序脚本,但是Linqpad自动完成功能要收费,且不开源,这样的话就不方便扩展了.今天在 http://csscriptnpp.codeplex.com/ 发现了一款C# ...

  5. 日志分析系统——Hangout源码学习

    这两天看了下hangout的代码,虽然没有运行体验过,但是也算是学习了一点皮毛. 架构浅谈 Hangout可以说是java版的Logstash,我是没有测试过性能,不过据说是kafka这边性能要高出L ...

  6. Java的String字符串内容总结

    String--字符串 获取字符串的长度 使用Sring类的length()方法可获取字符串对象的长度,例: str.length(); str代表指定的字符串对象;返回值为返回指定字符串的长度.例: ...

  7. 练习2 练习目标-使用引用类型的成员变量:在本练习中,将扩展银行项目,添加一个(客户类)Customer类。Customer类将包含一个Account对象。

    package banking; public class Customer { private String firstName; private String lastName; private ...

  8. TSql Output 用法

    第一部分:TSql Output 关键字有两种应用场景 1,作为存储过程的参数类型,从存储过程中返回数据 2,返回受 INSERT.UPDATE.DELETE 或 MERGE 语句影响的各行中的信息, ...

  9. 免费在线loading生成。

    loading这个在项目中也是经常要使用,这里推荐一个网站http://www.ajaxload.info/可以在线生成loading. 进来页面是这样的. 勾选transparent将会生成透明的g ...

  10. 使用Source Safe for SQL Server解决数据库版本管理问题

    简介     在软件开发过程中,版本控制是一个广为人知的概念.因为一个项目可能会需要不同角色人员的参与,通过使用版本控制软件,可以使得项目中不同角色的人并行参与到项目当中.源代码控制使得代码可以存在多 ...