C#正则表达式验证

一、正则表达式的重要工具(RegexBuddy)

软件需要自己去官网下载安装

里面划分了三个不同的区域

  • 选择正则语言环境

    根据需要选择

  • 正则条件区

    筛选我们需要的内容条件

  • 内容匹配区

    被筛选的文本

因为我们用的是C#语言,所以语言环境就选择(C#(.NET 2.0-4.5))即可

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1UKeP5nh-1635686518151)(D:\大二课程学习(2021-8-11)\正则表达式\笔记\image\1、RegexBuddy.jpg)]

二、什么是正则表达式

  • 正则表达式又称规则表达式,英文名为 Regular Expression

  • 在代码中常用 regex\regexp或RE 来表示正则

  • 正则表达式通常被用来检索、替换那些符合某个规则的文本内容

三、简单的正则表达式

列:gdsadasg6456456465dhasdh878

正则:\bgds

获取到以gds开头的文本,使用上面的软件就可以在匹配区域中高亮显示

\b 是正则表达式规定的一个特殊代码,称为 元字符

表示 单词的开头或结尾,也就是单词的分界处,只匹配一个位置

四、元字符的讲解

语法说明
.匹配除换行符以外的任意字符
\w匹配数字、字母、下划线或汉子
\s匹配任意的空白符号
\d匹配数子
\b匹配单词的开始或结束
^匹配字符串的开始
$匹配字符串的结束

五、\ 转义字符

如果想要查早元字符的本身就需要用到转义字符

咧:

\ . \ * \ ,

注意:如果要查早 \ 本身也得使用转义 \\

六、通用的限定符

语法说明
*重复0次或更多次
+重复1次或更多次
?重复0次或1次
{n}重复n次
{n,}重复n次或更多次
{m,m}重复n到m次

七、反义字符

语法说明
\W匹配任意不是字母,数字,下划线,汉子的字符
\S匹配任意不是空白符的字符
\D匹配任意非数字的字符
\B匹配不是单词开头或结束的字符
[^x]匹配除了x意外的任意字符
[^aeiou]匹配除了 aeiou 这几个字母以外的字符
<a[^>]+>匹配用尖括号括起来的以a开头的字符串 dt>wer

八、替换

写一个正则表达式用于匹配几种格式的电话号码
例如:(010)88886666,或022-22334455,或02912345678
正则表达式:(0\d{2}[)]\d{8}|0\d{2}[- ]?\d{8}

注意:使用替换时,顺序是很重要的

主要是通过 | 来完成一个替换,也可以看做编程里面的 或

九、分组语法

语法说明
(?=exp)匹配exp前面的位置
(?<=exp)匹配exp后面的位置
(?!exp)匹配后面跟的不是exp的位置
(?<!exp)匹配前面不是exp的位置

例子:<img οnlοad=“AutoResizeImage(200,200,this)“src=”/Document/Title/Temp/2017-12-114bc5.png” >
请匹配出:οnlοad=“AutoResizeImage(200,200,this)” 正则表达式:onload.+(?=src)
请匹配出:2017-12-114bc5.png 正则表达式:(?<=Document/Title/Temp/).+(?=")

十、贪婪与懒惰

懒惰:

当正则表达式中包含能接受重复的限定符时,尽可能匹配多的字符,被称为 贪婪模式

懒惰:
有时我们更需要懒惰匹配,尽可能匹配少的字符

如果将前面给出的限定符转义为懒惰匹配模式,只需要在它后面加上一个问好

懒惰限定符

语法说明
*?重复任意次,尽可能少重复
+?重复一次或更多次,尽可能少重复
??重复0次或1次,尽可能少重复
{n,m}?重复n到m次,尽可能少重复
{n,}?重复n次以上,尽可能少重复

十一、关于C#中的正则使用

定义string类型的字符串

string str = "<img οnlοad=\"AutoResizeImage(200,200,this)\"src=\"/Document/Title/Temp/2017-12-114bc5.png\" >" +
                  "<img οnlοad=\"AutoResizeImage(200,200,this)\"src=\"/Document/Title/Temp/2017-12-114bc5.png\" >" +
                  "<img οnlοad=\"AutoResizeImage(200,200,this)\"src=\"/Document/Title/Temp/2017-12-114bc5.png\" >";

里面需要通过 \ 进行转义,不然会报错

  1. 实例化 Regex

    Regex regex = new Regex("onload.+?(?=src)");
    

    Regex(“写正则规则”)

  2. IsMatch:指定的正则表达式在指定的输入字符串中是否找到了匹配项。

    bool blRG = regex.IsMatch(匹配项);
    
  3. Match:指定的正则表达式的第一个匹配项

    Match match = regex.Match(str);
    string str1 = match.Value;
    

    返回一个包含有关匹配的信息的对象。

    value:返回结构通过匹配捕获的子字符串

  4. MatchCollection表示通过以迭代方式将正则表达式模式

    MatchCollection matchCol = regex.Matches(str);
    

    应用于输入字符串所找到的成功匹配的集合

  5. 循环获取数据

    for (int i = 0; i < matchCol.Count; i++)//通过循环获取每一个匹配对象
    {
        string value1 = matchCol[i].Value;
    }
    
  6. Replace:替换与指定正则表达式匹配的所有字符串

    string str2 = Regex.Replace(str, "onload.+?(?=src)", "~~~~");
    

更多推荐

C#正则表达式验证