C#学习日志 day 6 ------ 常用正则表达式例举

  c#支持正则表达式匹配文本,这里讨论一下正则表达式的使用方法以及例举一些常用的正则表达式的匹配。

  1、在vs中使用正则表达式

  在vs中使用正则表达式,需要using System.Text.RegularExpressions命名空间。

  该命名空间包涵以下几个类

Capture 用于单个表达式捕获结果
CaptureCollection 用于一个序列进行字符串捕获
Group 表示单个捕获的结果
GroupCollection 表示捕获组的集会
Match 表示匹配单个正则表达式结果
MatchCollection 表示通过迭代方式应用正则表达式到字符串中
Regex 表示不可变的正则表达式
RegexCompilationInfo 将编译正则表达式需要提供信息

其中

  构造正则表达式需要涉及Regex类,在Regex类中包括:IsMatch()、Replace()、Split()和其他方法方法,这里介绍IsMatch()、Replace()、Split()方法

  

(1) IsMatch()方法;

IsMatch()方法实际上是一个返回Bool值得方法,如果测试字符满足正则表达式返回True否则返回False;

例:Regex reg = new Regex("022\\d{8}");//构造表示以022开头的电话号码

  string temp = "02222332332";

  string temp1 = "02322332332";

  Console.WriteLine(reg.IsMatch(temp).ToString());

  Console.WriteLine(reg.IsMatch(temp1).ToString());

结果是    True

     False

(2) Replace()方法;

Replace()方法实际上是一种替换的方法,替换匹配正则表达式匹配模式;

例:替换邮箱中的@,将其变成AT

Regex reg = new Regex("\w{1,}@\w{1,}\.");//邮箱地址

  string email = "[email protected]";

  Console.WriteLine(reg.Replace(email,"@","AT");

输出为:whateverATqq.com

(3) Split()方法;

Split()方法实际上是拆分的方法,根据匹配正则表达式进行拆分储存在字符串数组中;

例:采用空格和分号作为分隔符将文本分隔开

  Regex reg = new Regex("\s|;");

  string mes = "hello nihao;zaijian";

  string[]  temp;

  temp = reg.Split(temp);

  foreach(string str in temp){

  Console.WriteLine(str.ToString());

  }

结果:hello

   nihao

     zaijian

2下面介绍一些c#正则的基本语法

  字符匹配语法: 

字符语法 语法解释 语法例子
\d 匹配数字(0~9) ‘\d’匹配8,不匹配12;
\D 匹配非数字 ‘\D’匹配c,不匹配3;
\w 匹配任意单字符 ‘\w\w’ 匹配A3,不匹配@3;
\W 匹配非单字符 ‘\W’匹配@,不匹配c;
\s 匹配空白字符 ‘\d\s\d’匹配3 d,不匹配abc;
\S 匹配非空字符 ‘\S\S\S’匹配A#4,不匹配3 d;
. 匹配任意字符 ‘....’匹配A$ 5,不匹配换行;
[…] 匹配括号中任意字符 [b-d]匹配b、c、d, 不匹配e;
[^…] 匹配非括号字符 [^b-z]匹配a,不匹配b-z的字符;

  重复匹配语法:

重复语法 语法解释 语法例子
{n} 匹配n次字符 \d{3}匹配\d\d\d,不匹配\d\d或\d\d\d\d
{n,} 匹配n次和n次以上 \w{2}匹配\w\w和\w\w\w以上,不匹配\w
{n,m} 匹配n次上m次下 \s{1,3}匹配\s,\s\s,\s\s\s,不匹配\s\s\s\s
? 匹配0或1次 5?匹配5或0,不匹配非5和0
+ 匹配一次或多次 \S+匹配一个以上\S,不匹配非一个以上\S
* 匹配0次以上 \W*匹配0以上\W,不匹配非N*\W

字符定位语法:

重复语法 语法解释 语法例子
^ 定位后面模式开始位置  
$ 前面模式位于字符串末端  
\A 前面模式开始位置  
\z 前面模式结束位置  
\Z 前面模式结束位置(换行前)  
\b 匹配一个单词边界  
\B 匹配一个非单词边界  

转义匹配语法:

转义语法 涉及字符(语法解释) 语法例子
“\”+实际字符 \ . * + ? | ( ) { }^ $ 例如:\\匹配字符“\”
\n 匹配换行  
\r 匹配回车  
\t 匹配水平制表符  
\v 匹配垂直制表符  
\f 匹配换页  
\nnn 匹配一个8进制ASCII  
\xnn 匹配一个16进制ASCII  
\unnnn 匹配4个16进制的Uniode  
\c+大写字母 匹配Ctrl-大写字母 例如:\cS-匹配Ctrl+S

3、下面介绍一些常用的正则匹配语句:

1.验证用户名和密码:("^[a-zA-Z]\w{5,15}$")正确格式:"[A-Z][a-z]_[0-9]"组成,并且第一个字必须为字母6~16位;

  2.验证电话号码:("^(\d{3.4}-)\d{7,8}$")正确格式:xxx/xxxx-xxxxxxx/xxxxxxxx;

  3.验证身份证号(15位或18位数字):("^\d{15}|\d{18}$");

  4.验证Email地址:("^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$");

  5.只能输入由数字和26个英文字母组成的字符串:("^[A-Za-z0-9]+$") ;

  6.整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$

  7.只能输入数字:"^[0-9]*$"。

  8.只能输入n位的数字:"^\d{n}$"。

  9.只能输入至少n位的数字:"^\d{n,}$"。

  10.只能输入m~n位的数字:。"^\d{m,n}$"

  11.只能输入零和非零开头的数字:"^(0|[1-9][0-9]*)$"。

  12.只能输入有两位小数的正实数:"^[0-9]+(.[0-9]{2})?$"。

  13.只能输入有1~3位小数的正实数:"^[0-9]+(.[0-9]{1,3})?$"。

  14.只能输入非零的正整数:"^\+?[1-9][0-9]*$"。

  15.只能输入非零的负整数:"^\-[1-9][]0-9"*$。

  16.只能输入长度为3的字符:"^.{3}$"。

  17.只能输入由26个英文字母组成的字符串:"^[A-Za-z]+$"。

  18.只能输入由26个大写英文字母组成的字符串:"^[A-Z]+$"。

  19.只能输入由26个小写英文字母组成的字符串:"^[a-z]+$"。

  20.验证是否含有^%&‘,;=?$\"等字符:"[^%&‘,;=?$\x22]+"。

  21.只能输入汉字:"^[\u4e00-\u9fa5]{0,}$"

  22.验证URL:"^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$"。

  23.验证一年的12个月:"^(0?[1-9]|1[0-2])$"正确格式为:"01"~"09"和"1"~"12"。

  24.验证一个月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正确格式为;"01"~"09"和"1"~"31"。

时间: 2024-10-01 06:50:06

C#学习日志 day 6 ------ 常用正则表达式例举的相关文章

Linux学习日志之Linux常用命令总结

Linux常用命令: 练习3遍以上,命令有点多,建议慢慢查看 一.命令基本格式 1.命令格式: [root(管理员)@localhost(主机名)~]#(超级用户提示符,普通用户提示符是$) adminis /root一级目录用pwd print working directory(打印工作目录)查看 /home/user1/二级目录 [[email protected] ~]# cd /usr/local/src/ 切换当前目录 [[email protected] src]# 命令[选项]

winform学习日志(二十八)----------将汉字转化为拼音,正则表达式和得到汉字的Unicode编码

一:上图,不清楚的看代码注解,很详细了 二:具体代码 窗体代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Text.RegularExpressio

jQuery源码学习:常用正则表达式

常用的数字正则(严格匹配) 正则 含义 ^[1-9]\d*$ 匹配正整数 ^-[1-9]\d*$ 匹配负整数 ^-?[1-9]\d*$ 匹配整数 /^(([1-9]\d*)|(0+))$/; 匹配非负整数(正整数 + 0) ^-[1-9]\d*|0$ 匹配非正整数(负整数 + 0) /^(([1-9]\d*)|0)\.\d+$/ 匹配正浮点数 ^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 匹配负浮点数 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\

《Linux学习并不难》Linux常用操作命令(14):grep命令查找文件中符合条件的字符串

8.14  <Linux学习并不难>Linux常用操作命令(14):grep命令查找文件中符合条件的字符串 使用grep命令可以查找文件内符合条件的字符串.          命令语法: grep [选项] [查找模式] [文件] 命令中各选项的含义如表所示. 选项 选项含义 -E 模式是一个可扩展的正则表达式 -F 模式是一组由断行符分隔的定长字符串 -P 模式是一个Perl正则表达式 -b 在输出的每一行前显示包含匹配字符串的行在文件中的字节偏移量 -c 只显示匹配行的数量 -i 比较时不

JAVA学习日志——Ajax和Json

# JAVA学习日志--Ajax和Json # Ajax和Json在一个web项目中可以说是经常用到了,Ajax是一种用于创建快速动态网页的技术,而Json则是一种与语言无关的数据交换的格式.以下是个人在学习过程中的总结. 一.Ajax 1.同步与异步 在学习Ajax之前我们要先知道什么是同步,什么是异步. 同步现象:客户端发送请求到服务器端,当服务器返回响应之前,客户端都处于等待卡死状态. 异步现象:客户端发送请求到服务器端,无论服务器是否返回响应,客户端都可以随    意做其他事情,不会被卡

C#常用正则表达式回顾

项目中有些时候需要用到正则表达式,但是自己对正则表达式不熟悉,每次学习完,过一段时间(长时间)不用,就又忘了,每次需要用到的时候都需要百度下,比较麻烦,这里把C#中经常用到的正则表达式做下总结. 正则表达式常用的环境 爬虫.网站数据验证.日志分析.字符串替换.获取子字符串.文本处理.字符串处理等 正则基础 1. []方括号表示匹配可以匹配方括号中的任意点单个字符,方括号只允许匹配单个字符.2. | 或表示两项之间的一个选择,它不能和方括号使用,只能和小括号使用.3. ()小括号表示一个子表达式的

Linux学习日志2-vim使用基础

vim是linux操作系统下的一个文本编辑工具,功能非常强大,但刚学习起来比较复杂.vim的所有功能要讲明白得有几百页,在这里只是记录一下vim的一些基本用法. 首先vim打开文件的三种方式: vim +# xxx(#是数字):表示打开xxx文件并将光标定位到指定行. vim -o xx1 xx2 xx3:表示同时打开三个文件,垂直分割显示 vim -O xx1 xx2 xx3:表示同时打开三个文件,水平分割显示 多个文件间跳转:键入ctrl+w后:→向左.←向右.↑向上.↓向下 vim打开文件

java常用正则表达式

java常用正则表达式 1.^\d+$ //匹配非负整数(正整数 + 0) 2.^[0-9]*[1-9][0-9]*$ //匹配正整数 3.^((-\d+) ?(0+))$ //匹配非正整数(负整数 + 0) 4.^-[0-9]*[1-9][0-9]*$ //匹配负整数 5.^-?\d+$ //匹配整数 6.^\d+(\.\d+)?$ //匹配非负浮点数(正浮点数 + 0) 7.^(([0-9]+\.[0-9]*[1-9][0-9]*) ?([0-9]*[1-9][0-9]*\.[0-9]+)

webpack2学习日志

webpack说容易也容易,说难也难,主要还是看个人,想学到什么样的程度,很多公司可能要求仅仅是会用就行,但是也有一些公司要求比较高,要懂一些底层的原理,所以还是要花一些时间的,看个人需求.这篇仅仅是做了一些总结,都是来自官网,便于复习. 一,先理解webpack的概念: 官网上:webpack 是一个现代 JavaScript 应用程序的模块打包器(module bundler).当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用