C正则表达式用法总结

C正则表达式用法总结判断用户输入的密码是否合法 判断用户输入的邮箱格式是否合法

最近学是C#的窗口应用开发编程,然后我在网站搜了一个早上,结果大多数是有一些基础的才看得懂,像对与我这个小白,看了半天都看不懂在这里插入图片描述

最后,还是请教了大神,把我教会了

在这里插入图片描述

下面就我对C#的正则表达式的一些总结,第一次写博客,哈哈哈哈,写的不好请见谅,各位大佬们,爱你们。

1.正则表达式的概念

什么是正则表达式?

英文Regular Expression,是计算机科学的一一个 重要概念,她使用一种数学算法来解决计算机程序中的文本检索,匹配等问题,正则表达式语言是一种专门用于字符串处理的语言。在很多语言中都提供了对它的支持,C#也不例外,它可以帮我们解决下面的问题:例如账号、密码的验证等等、

1.1正则表达式的组成

正则表达式就是由普通字符以及特殊字符(成为元字符)组成的文字模式。该模式描述在查找文字

1.1.1元字符是什么

所谓元字符就是指那些在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式。

1.1.2定位元字符

字符 说明

  • \b 匹配单词的开始或结束.
  • \B 匹配非单词的开始或结束
  • ^匹配必须出现在字符串的开头或行的开头
  • $匹配必须出现在以下位置: 字符串结尾、字符串结尾处的\n之前或行的结尾。
  • \A 指定匹配必须出 现在字符串的开头(忽略 Mutiline 选项)。
  • \z指定匹配必 须出现在字符串的结尾(忽略 Multiline选项)。
  • \z指定匹配必须出现在字符串的结尾或字符串结尾处的\n之前(忽略Multilie选项)。
  • \G 指定匹配必须出现在上- -个匹配结束的地方。与Match.NextMatch() -起使用时,此断言确保所有匹配都是连续的。

1.2三个括号?

在正则表达式中有3种类型的括号

他们分别是:方括号、花括号、圆括号、(简称方花园)?

圆括号“(“ :表示用来分组的。
插入符号“入”:表示正则式的开始
美元符号“$” :表示正则式的结束




1.3简化正则表达式

实际命令 快捷命令
[0-9](数字) d
[a-z][0-9][_](数字、字母、下划线) W
0次或多次发生 *
至少一次发生 +
0次或1次发生 ?

1.4@符号的作用

我们经常在正则表达式字符串上加@字符,目的就是为了,不让编译器去解析其中的转义字符,,而作为正则表达式语法(元字符)存在。

在这里插入代码片 

1.5正则表达式可以实现四种功能:

因为我看到其他博客说C#有很多方法可以用正则表达式,然后下面的一些例子,都用的是我认为,比较简单的方法。大神勿喷,┗|`O′|┛ 嗷~~

温馨提示:要运用下面的一些语句的要引入

using System.Text.RegularExpressions的命名空间

  • 1,获取:通过正则表达式,从字符串中获取我们想要的部分
Regex reg = new Regex("[0-9]*");//这是搜索匹配0-9的数字 Console.WriteLine(reg.Match("12asda"));//最后提取出了12成功,嘻嘻 
  • 2,匹配:判断给定的字符中是否符合正则表达式的过滤逻辑 你可以认为正则表达式表述了一个字符串的书写规则
在这里的就得用从开头到结尾都为的数字为True,出现一个不为数字输出False Regex reg = new Regex("^[0-9]*$");//判断整个字符串是否都为数字 Console.WriteLine(reg.IsMatch("12asda"));//最后输出False Console.WriteLine(reg.IsMatch(""));//最后输出True 
  • 3, 分割
1、用字符串分隔: using System.Text.RegularExpressions; string str="aaajsbbbjsccc"; string[] sArray=Regex.Split(str,"js",RegexOptions.IgnoreCase); foreach (string i in sArray) Response.Write(i.ToString() + "
"

); 输出结果: aaa bbb ccc
2、用多个字符来分隔: string str="aaajbbbscccjdddseee"; string[] sArray=str.Split(new char[2] { 
   'j','s'}); foreach(string i in sArray) Response.Write(i.ToString() + "
"

); 输出结果: aaa bbb ccc ddd eee
3、用单个字符来分隔: string str="aaajbbbjccc"; string[] sArray=str.Split('j'); foreach(string i in sArray) Response.Write(i.ToString() + "
"

); 输出结果: aaa bbb ccc
  • 4, 替换
string s = "aaa"; Regex r = new Regex("[0-9]");//正则表达式规则 Console.WriteLine(r);//这个输出为 [0-9] (我也不知道具体的原理)? s = r.Replace(s, "9", 1);//第一个参数是字符串,第二个是正确匹配字符串的时候要替换的字符,第三个参数就是正确匹配正则表达式,然后替换的次数 Console.Write(s);//输出aaa 

2.常用的正则表达式方法

2.1静态方法IsMath

1,静态方法IsMatch

IsMath(返回值是一个布尔类型,用于判断指定的字符串是否与正则表达式字符中匹配,它有三个重载方法)

bool IsMatch(string input, string pattern);

参数:

input: 要搜索匹配项的字符串。

pattern:要匹配的正则表达式模式。

返回结果:如果正则表达式找到匹配项,则为true;否则,为false。

bool IsMatch(string inpdt, string pattern, RegexOptions options);

参数:

input: 要搜索匹配项的字符串。

pattern:要匹配的正则表达式模式。

options:枚举值 的一一个按位组合, 这些枚举值提供匹配选项。

返回结果:如果正则表达式找到匹配项,则为true;否则,为false。

pattern:要匹配的正则表达式模式。

options:枚举值的一个按位组合,这些枚举值提供匹配选项。

matchTimeout:超时间隔

2.1.1 关于参数RegexOptions
它是一个枚举类型,有以下枚举值 RegexOptions枚举值 内联标志 简单说明 ExplicitCapture n 只有定义了命名或编号的组才捕获 IgnoreCase i 不区分大小写 IgnorePatternWhitespace x 消除模式中的非转义空白并启用由#标记的注释。 MultiLine m 多行模式,其原理是修改了^和$的含义 SingleLine s 单行模式,和Multiline相对 

2.2静态方法Match

  • Match Match(string input, string pattern);
  • Match Match(string input,string pattern, RegexOptions options); input,
  • Match Match(string string pattern, RegexOptions options, TimeSpan matchTimeout);

2.3静态方法Matchs

静态方法Matches,在指定的输入字符串中搜索指定的正则表达式的所有匹配项。跟上面方法不同之处,就是这个方法返回的是所有匹配项,他同样有三个重载方法,并且参数和Match方法完全相同此外,在Regex类中,还有一个同名的非静态方法,适用于多个实例的情况下,效率更高- -些。

2.4 Replaces函数

我们知道正则表达式主要是实现验证,提取,分割,替换字符的功能.Replace函数是实现替换功能的.

1 )Replace(string input,string pattern,string replacement) //input是源字 符串,pattern是匹配的条件,replacement是替换的内容,就是把符合匹配条件pattern的内容转换成它 比如string result = Regex.Replace("abc", "ab", "#" );//结果是#c,就是把字符串abc中的ab替换成# 2 )Replace(string input,string pattern,string replacement,RegexOptions options) //RegexOptions是- 一个枚举类型,用来做- -些设定 //前面用注释时 就用到了RegexOptions.IgnorePatternWhitespace.如果在匹配时忽略大小写就可以用 RegexOptions.lgnoreCase 比如string result = Regex.Replace("ABc", "ab", “#" ,RegexOptions.lgnoreCase); 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/202420.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 上午7:11
下一篇 2026年3月20日 上午7:11


相关推荐

  • linux中ssh免密登录,Linux之SSH免密登录

    Linux双向SSH免密登录原理双向,顾名思义,双方互通,此处的意思是多台linux两两免密登录.双向比单向多了些操作,单向只需把某一个linux的公钥发送给其他linux即可,而双向要实现集群中的每一台机器都保存其他所有…【Linux】ssh免密登录一.ssh免密配置ssh无密码登录要使用公钥与私钥.linux下可以用用ssh-keygen生成公钥/私钥对,下面我以Cent…

    2022年4月14日
    43
  • i2c总线的通信协议(i2c通信协议原理)

    I2C总线支持设备之间的短距离通信,它只需要两根信号线来完成信息交换。I2C最早是飞利浦在1982年开发设计并用于自己的芯片上,一开始只允许100kHz、7-bit标准地址。1992年,I2C的第一个公共规范发行,增加了400kHz的快速模式以及10-bit扩展地址。在I2C的基础上,1995年Intel提出了“SystemManagemen

    2022年4月14日
    201
  • PDAF_pdaft模型

    PDAF_pdaft模型相位检测、自动对焦、激光、红外线、更高的像素……现在,出现在智能手机上的摄像技术已经越来越先进,并且每个厂商都在不断的尝试创新,追求比竞争对手们拥有更好的拍照效果。三星从Galaxy S5开始使用了PDAF技术,而LG则向我们展示了激光自动对焦,还有联想在最新的Vibe Shot系列产品上带来了红外对焦系统,而索尼更是准备好将自己已经非常领先的摄像头技术使用到智能手机上。但是,究竟

    2025年10月1日
    4
  • 理解BN层「建议收藏」

    理解BN层「建议收藏」https://www.cnblogs.com/king-lps/p/8378561.html转载

    2022年10月14日
    5
  • manus如何使用

    manus如何使用

    2026年3月15日
    2
  • 检查网络配置信息

    检查网络配置信息

    2022年1月9日
    59

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号