正则表达式就是一组字符串运算规则,你需要先把元字符记熟,然后就可以随意组合获得你想要的结果。把一些常用的正则表达式背下来也是一种方法,再加以变化获得你想要的结果。

正则表达式不需要刻意的去学习,当用到的时候上网搜索一下,基本上你能想到的都可以搜到,但是需要了解一下,这样就可以判断自己搜到的正则表达式是否符合自己的规则。

正则表达式很多,学起来的难度也挺大的,但是简单好用,建议用到的时候搜一下。

表1.常用的元字符
代码 说明
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线或汉字
\s 匹配任意的空白符
\d 匹配数字
\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束
表2.常用的限定符
代码/语法 说明
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次
表3.常用的反义代码
代码/语法 说明
\W 匹配任意不是字母,数字,下划线,汉字的字符
\S 匹配任意不是空白符的字符
\D 匹配任意非数字的字符
\B 匹配不是单词开头或结束的位置
[^x] 匹配除了x以外的任意字符
[^hua] 匹配除了hua这几个字母以外的任意字符

举例说明

//  匹配中文字符的正则表达式: [u4e00-u9fa5]    //匹配中文还真是个头疼的事,有了这个表达式就好办了
// 匹配双字节字符(包括汉字在内):[^x00-xff]
// 匹配空白行的正则表达式:ns*r //评注:可以用来删除空白行
// 匹配首尾空白字符的正则表达式:^s*|s*$ //可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等)
// 匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
// 匹配网址URL的正则表达式:[a-zA-z]+://[^s]*
// 匹配帐号是否合法(字母开头,允许4-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{3,15}$
// 匹配国内电话号码:d{3}-d{8}|d{4}-d{7} //匹配形式如 1111-1111111 或 111-11111111
// 匹配腾讯QQ号:[1-9][0-9]{4,} //腾讯QQ号从10000开始
// 匹配中国邮政编码:[1-9]d{5}(?!d) //中国邮政编码为6位数字
// 匹配身份证:d{15}|d{18} //中国的身份证为15位或18位
// 匹配ip地址:d+.d+.d+.d+
// 匹配特定数字:^[1-9]d*$    //匹配正整数
// 匹配特定字符串: [A-Za-z0-9]+$   //匹配由数字和26个英文字母组成的字符串
// 匹配全角: [^uFF00-uFFFF]
// ^w+$  //匹配由数字、26个英文字母或者下划线组成的字符串
// 匹配数字:“[0-9]*$
// 匹配m-n位的数字:^d{m,n}$
// 验证用户密码:“^[a-zA-Z]w{5,17}$”正确格式为:以字母开头,长度在6-18之间
// 验证InternetURL:“^http://([w-]+.)+[w-]+(/[w-./?%&=]*)?$”
// 匹配HTML标记的正则表达式:/<(.*)>.*|<(.*) />/

下面是一个.NET正则表达式的类,其实也可以不用写,微软已经封装的很好了,这里只是做了一个简单的操作。

/// <summary>
/// 操作正则表达式的公共类
/// </summary>
public class RegexHelper
{
/// <summary>
/// 验证输入字符串是否与模式字符串匹配,匹配返回true
/// </summary>
/// <param name="input">输入字符串</param>
/// <param name="pattern">模式字符串</param>
public static bool IsMatch(string input, string pattern)
{
return IsMatch(input, pattern, RegexOptions.IgnoreCase);
} /// <summary>
/// 验证输入字符串是否与模式字符串匹配,匹配返回true
/// </summary>
/// <param name="input">输入的字符串</param>
/// <param name="pattern">模式字符串</param>
/// <param name="options">筛选条件</param>
public static bool IsMatch(string input, string pattern, RegexOptions options)
{
return Regex.IsMatch(input, pattern, options);
}
}

.NET通用工具——正则表达式的更多相关文章

  1. JS正则表达式常用总结

    正则表达式的创建 JS正则表达式的创建有两种方式: new RegExp() 和 直接字面量. //使用RegExp对象创建 var regObj = new RegExp("(^\\s+) ...

  2. Python高手之路【五】python基础之正则表达式

    下图列出了Python支持的正则表达式元字符和语法: 字符点:匹配任意一个字符 import re st = 'python' result = re.findall('p.t',st) print( ...

  3. C# 正则表达式大全

    文章导读 正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串.正则表达式无疑是处理文本最有力的工具,而.NET提供的Regex类实现了验证正则表达式的方法.Regex 类表示不可变(只读)的 ...

  4. C#基础篇 - 正则表达式入门

    1.基本概念 正则表达式(Regular Expression)就是用事先定义好的一些特定字符(元字符)或普通字符.及这些字符的组合,组成一个“规则字符串”,这个“规则字符串”用来判断我们给定的字符串 ...

  5. JavaScript正则表达式,你真的知道?

    一.前言 粗浅的编写正则表达式,是造成性能瓶颈的主要原因.如下: var reg1 = /(A+A+)+B/; var reg2 = /AA+B/; 上述两个正则表达式,匹配效果是一样的,但是,效率就 ...

  6. Python 正则表达式入门(中级篇)

    Python 正则表达式入门(中级篇) 初级篇链接:http://www.cnblogs.com/chuxiuhong/p/5885073.html 上一篇我们说在这一篇里,我们会介绍子表达式,向前向 ...

  7. 【JS基础】正则表达式

    正则表达式的() [] {}有不同的意思. () 是为了提取匹配的字符串.表达式中有几个()就有几个相应的匹配字符串. (\s*)表示连续空格的字符串. []是定义匹配的字符范围.比如 [a-zA-Z ...

  8. JavaScript 正则表达式语法

    定义 JavaScript定义正则表达式有两种方法. 1.RegExp构造函数 var pattern = new RegExp("[bc]at","i"); ...

  9. [jquery]jquery正则表达式验证(手机号、身份证号、中文名称)

    数字判断方法:isNaN()函数 test()方法 判断字符串中是否匹配到正则表达式内容,返回的是boolean值 ( true / false ) // 验证中文名称 function isChin ...

随机推荐

  1. 【转】 DOTA2中的伪随机及其lua实现

    因为单纯的随机确实会影响到竞技性,所以dota2引入的是伪随机机制,在大量的技能中,比如说混沌的混乱之箭.剑圣的剑舞.冰女的冰霜领域之类的技能,都利用了伪随机机制. 而纯随机,或者标准正态分布并不会因 ...

  2. 用crash来分析一下proc的文件访问

    一般来说,用户通过fd的传入,调用open系统调用,来获取fd,然后read的时候,通过这个fd来查找对应的file* SYSCALL_DEFINE3(open, const char __user ...

  3. C++随记

    1.const限定符 const限定变量的值不可变,并且const对象必须要初始化 const int buf = 512; //正确,表明buf的值为512 buf = 400;  //错误,buf ...

  4. Android DevArt6:Android中IPC的六种方式

    Android中IPC的六种方式 1.使用Bundle 最简单的进程间通信方式:Intent + Bundle: 支持三大组件:Activity.Service.BroadcastReceiver : ...

  5. django 认证系统--1

    django的认证系统提供认证和授权两种功能 认证系统包括如下部分: 1.Users 2.Permissions 主要是以 YES/NO 的形式反映一个用户是否能够做某事 3.Groups:就是对多个 ...

  6. datagridview表头全选

    参与程序http://www.codeproject.com/KB/grid/CheckBoxHeaderCell.aspx 这里老外写的一个控件,他少了委托重载的一个方法.先写一个控件 public ...

  7. /src/applicationContext.xml

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  8. kafka 删除topic

    两种方法: 一.修改配置文件server.properties 添加如下配置: delete.topic.enable=true 说明:官方给的文档说明“Enables delete topic. D ...

  9. python pbr 打包

    在之前学习stevedore时,在setup.py中使用setuptools打包发布了代码,然后调用代码中的实例化对象.参考我的文章 https://www.cnblogs.com/CaesarLin ...

  10. Linux 学习总结(一)

    一.Linux系统有7个运行级别(runlevel) 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆 运行 ...