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\" >";
里面需要通过 \ 进行转义,不然会报错
-
实例化 Regex
Regex regex = new Regex("onload.+?(?=src)");
Regex(“写正则规则”)
-
IsMatch:指定的正则表达式在指定的输入字符串中是否找到了匹配项。
bool blRG = regex.IsMatch(匹配项);
-
Match:指定的正则表达式的第一个匹配项
Match match = regex.Match(str); string str1 = match.Value;
返回一个包含有关匹配的信息的对象。
value:返回结构通过匹配捕获的子字符串
-
MatchCollection表示通过以迭代方式将正则表达式模式
MatchCollection matchCol = regex.Matches(str);
应用于输入字符串所找到的成功匹配的集合
-
循环获取数据
for (int i = 0; i < matchCol.Count; i++)//通过循环获取每一个匹配对象 { string value1 = matchCol[i].Value; }
-
Replace:替换与指定正则表达式匹配的所有字符串
string str2 = Regex.Replace(str, "onload.+?(?=src)", "~~~~");
更多推荐
C#正则表达式验证
发布评论