C#正则表达式入门
发布日期:2021-07-29 11:13:52 浏览次数:5 分类:技术文章

本文共 3069 字,大约阅读时间需要 10 分钟。

[C#正则表达式入门内容]

什么是正则表达式

涉及的基本的类

正则表达式基础知识

构建表达式基本方法

编写一个检验程序

参考资料

[C#正则表达式入门正文]

对于初学者看到类似“/w+@/w+/./w{1,3}”这样复杂没有规律的字符,就会莫名产生一种恐惧感。其实正则表达式和字符串(String)的使用同样非常简单。下面让我们逐步地走进正则表达式的世界!

什么是正则表达式

正则表达式是用来检验和操作字符串的强大工具。简单的理解正则表达式可以认为是一种特殊的验证字符串。正则表达式常见运用是验证用户输入信息格式,比如上面的那组“/w{1,}@/w{1,}/./w{1”,实际上就是验证邮件地址是否合法的;当然正则表达式不仅仅是用于验证,可以说只要运用字符串的地方都可以使用正则表达式;

涉及的基本的类正则表达式在英文中写作(Regular Expression),根据正则表达式的使用范围和单词意思,.NET将其命名空间设置为System.Text.RegularExpressions;

在该命名空间内包括了8个基本的类:Capture、CaptureCollection、Group、GroupCollection、Match、MatchCollection、Regex和RegexCompilationInfo如图1所示;

MSDN Library中正则表达式命名空间

图1 MSDN Library中正则表达式命名空间

Capture 用于单个表达式捕获结果

CaptureCollection 用于一个序列进行字符串捕获

Group 表示单个捕获的结果

GroupCollection 表示捕获组的集会

Match 表示匹配单个正则表达式结果

MatchCollection 表示通过迭代方式应用正则表达式到字符串中

Regex 表示不可变的正则表达式

RegexCompilationInfo 将编译正则表达式需要提供信息

[注意]

本文属于初学正则表达式的入门文章,对于高级的分组(Group)及其涉及语法等在这里不做介绍;

正则表达式基础知识基本语法

在正则表达式中拥有一套自己的语法规则,常见语法包括;字符匹配、重复匹配、字符定位、转义匹配和其他高级语法(字符分组、字符替换和字符决策);

字符匹配语法:

字符语法 语法解释 语法例子

/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

构造正则表达的方法构造正则表达式需要涉及Regex类,在Regex类中包括:IsMatch()、Replace()、Split()和Match的类;(1) IsMatch()方法;IsMatch()方法实际上是一个返回Bool值得方法,如果测试字符满足正则表达式返回True否则返回False;

这是我发了不少时间整理的的正则表达式,新手朋友注意一定要手册一下哦,这样可以节省很多写代码的时间,中国自学编程网为新手朋友整理发布。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  只能输入由数字、26个英文字母或者下划线组成的字符串:"^/w+$"。

  验证用户密码:"^[a-zA-Z]/w{5,17}$"正确格式为:以字母开头,长度在6~18之间,只能包含字符、数字和下划线。

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

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

  验证Email地址:"^/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*$"。

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

  验证电话号码:"^(/(/d{3,4}-)|/d{3.4}-)?/d{7,8}$"正确格式为:"XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX"。

  验证身份证号(15位或18位数字):"^/d{15}|/d{18}$"。

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

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

转载地址:https://blog.csdn.net/thy822/article/details/5070883 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:最先进的技术:Windows Workflow Foundation
下一篇:MSTR如何添加基于登录用户的动态安全筛选

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年03月27日 12时25分07秒