本文详细讲解了C#正则表达式的用法,并通过示例代码详细介绍。对大家的学习或者工作都有一定的参考价值,有需要的朋友可以参考一下。
目录
I简介字符转义字符类分组构造限定符II C#常用正则表达式符号III。密码
一、简介
正则表达式是匹配输入文本的模式。的。Net framework提供了允许这种匹配的正则表达式引擎。模式由一个或多个字符、运算符和结构组成。下面列出了用于定义各种正则表达式的通用字符、运算符和结构。
字符转义
正则表达式中的反斜杠字符(\)表示其后的字符是特殊字符,或者应该按其原始含义进行解释。
转义符描述模式匹配\a匹配报警(铃声)字符\u0007。\a '警告!\ u 0007 ' \ u 0007 '中的\ b在字符类中,它与退格键\u0008匹配。[\b]{3,}'\b\b '中的' \b\b\b '与制表符\u0009匹配。(\w )\t'Name\tAddr\t '中的' Name\t '和' Addr\t'\r与回车符\u000D匹配。(\r不等同于newline \n)。)\r\n(\w )'\r\nHello\nWorld。' \ r \竖线' \v与竖线制表符\u000B匹配。[\v]{2,}'\v\v '中的' \v\v' \ f '与换页符\u000C匹配。[\f]{2,}“\f\f”中的“\ f \ f”与换行符\ u000A匹配。\r\n(\w )'\r\nHello\nWorld。' \r\nHello'\e匹配转义符\u001B。\e'\x001B '中的\ e' \x001B'\ nnn指定八进制表示法中的一个字符(nnn由两到三位数组成)。\ w \ 040 \ w 'a bc '和' c d '中的' a BC d ' \ x nn使用十六进制表示法来指定字符(nn正好由两位数字组成)。\ w \ x20 \ w 'a bc '和' c d '中的' c d ' \ c X \ c x匹配由X或X指定的ASCII控制字符,其中X或X是控制字符的字母。\ x 0003 '(Ctrl-C)\ u nnnn in \ cC ' \ x 0003 '使用十六进制表示法匹配一个Unicode字符(由nnnn表示的四位数字)。\ w \ u0020 \ w 'a bc '和' c d '中的' a bc d '匹配后面跟有无法识别的转义字符的字符。\ d [\-x \ * \ d' (22) * 3*9 '中的“2 ^ 2”和“3 * 9”
字符类
类匹配一组字符中的任何字符。
类别描述模式匹配[character_group]匹配character_group中的任何单个字符。默认情况下,匹配区分大小写。' mat '中的' m ',' moon '中的' m '和' n '不是:它们匹配不在character_group中的任何单个字符。默认情况下,character_group中的字符区分大小写。[AEI]' avail '中的' v '和' l'[ first-last]字符范围:匹配从第一个字符到最后一个字符范围内的任何单个字符。[b-d][b-d]irds可以搭配Birds,Cirds,Dirds。通配符:匹配任何单个字符,除了\ n。
以匹配原始句点字符(。或\u002E),您必须在它前面加一个转义符(\。).e'have '中的A.e'have '和' mate '中的' ate'\p{ name}匹配由name指定的Unicode泛型类别或命名块中的任何单个字符。\ p { Lu }“city lights”中的“c”和“l”\ p { name }匹配不在由name指定的Unicode一般类别或命名块中的任何单个字符。\ p { Lu }“city”中的“I”、“t”和“y”\ w匹配任何单词字符。“room # 1”中的“r”、“o”、“m”和“1”\ W匹配任何非单词字符。“房间#1”中的“#”匹配任何空白字符。\ w \ s' D '\S in' id a1.3 '匹配任何非空白字符。\s\S'int __ctr' with' _'\d匹配任何十进制数。\ d“4=iv”中的“4”匹配任何不是十进制数的字符。\ D ' IV '中的' 4=','=','',' I '和' V '
分组构造
分组构造描述正则表达式的子表达式,通常用于捕获输入字符串的子字符串。
组描述模式匹配(子表达式)捕获匹配的子表达式,并将它们分配给一个从零开始的序列号。(\ w)\ 1‘深’中的‘ee’(?名称子表达式)将匹配的子表达式捕获到命名组中。(?double \ w)\ k ' ee ' in double \ w)\ k double ' deep '(?1-name2subexpression)定义平衡组定义。(((? 'Open'\()[^\(\)]*)(((?'Close-Open'\))[^\(\)]*) )*(?(打开)(?)' ((1-3)*(3-1))' (?子表达式)定义非捕获组。写(?行)?WriteLine' in '控制台。WriteLine()'(?Imx-imnsx-imnsx:subexpression)应用或禁用子表达式中指定的选项。A\d{2}(?I:\w )\b'A12xl A12xl A12xl '和' A12XL '(?=子表达式)零宽度正预测谓词。\w(?=\.)‘他是’中的‘是’、‘然’和‘出’。狗跑了。太阳出来了。' (?子表达式)零宽度否定预测第一次断言。\b(?Un) \ w \ b在' unsafe sure unity used '中的' sure '和' used '(?=子表达式)零宽度肯定审查之后是断言。(?=19)' 99 ',' 50 '和' 05 ' in \ d { 2 } \ b ' 1851 1999 1950 1905 2003 '(?子表达式)零宽度否定审查之后是断言。(?Wo)' man '中的' man \ b' hi woman hi man '(?子表达式)非回溯(也称为“贪婪”)子表达式。[13579](?b)“1ab 3a BBC 5AB 5ac”中的“1ab”、“3ab”和“5AB”
限定符
限定符指定输入字符串中必须存在多少个previous元素(可以是字符、组或字符类)的实例才能匹配。限定符包括下表中列出的语言元素。
限定词描述模式匹配*匹配前一个元素零次或多次。\d*\。\d'.0 ',' 19.9 ',' 219.9 '与前一个元素匹配一次或多次。“be”中的“bee”和“bent”中的“be”?匹配前一个元素零次或一次。拉伊?N''ran ',' rain'{ n}正好匹配最后一个元素n次。\ d { 3 }“1,043.6”中的“043”和“9,876,543,210”中的“876”,“543”和“210”至少与前一个元素匹配n次。\d{2,}''166 ',' 29 ',' 1930'{ n,m}与前一个元素匹配至少n次,但不超过m次。\d{3,5 }“19302”中的“166”,“17668”,“193024”*?零次或多次匹配最后一个元素,但次数越少越好。\d*?\.\d'.0 '、' 19.9 '、' 219.9 '?匹配前一个元素一次或多次,但次数越少越好。是吗?Been中的be,bent中的be?匹配前一个元素零次或一次,但次数越少越好。拉伊?n''ran '、' rain'{ n }?匹配前导元素n次。\d{3}?'1,043.6中的,043和9,876,543,210中的,876,543和210?匹配最后一个元素至少n次,但次数越少越好。\d{2,}?'166 ',' 29 '和' 1930'{ n,m}?匹配最后一个元素的次数在n到m之间,但是次数越少越好。\d{3,5}?' 193 '和' 024 '中的' 166 ',' 17668 ',' 193024 '
二、C#常用正则表达式符号大全
验证号:[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})?$
验证整数和一个小数位:[0-9](。[1-9] {1})?$
验证一个非零正整数:\?[1-9][0-9]*$
验证非零负整数:\-[1-9] [0-9] * $
验证非负整数(正整数0) \ d $
验证非正整数(负整数0) ((-\ d) | (0)) $
验证长度为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之间,只能包含字符、数字和下划线。
请验证它是否包含“% 1”;=?$ '和其他字符:[% ',=?$\x22]
验证汉字:[\ u4e00-\ u9fa5] $
电子邮件地址:(\ w) (\。w) * @ (\ w) ((\。w {2,3}) {1,3}) $
身份验证互联网络URL: http://([\ w-] \。)[\ w-] (/[\ w-。/?%=]*)?$ ;^[a-zA-z] ://(w (-w )*)(。(w(-w)*)*(?S*)?$
认证电话号码:(\ (\ d {3,4} \) | \ d {3,4}-)?\ d {7,8 } $:-正确的格式是:XXXX-XXXXXXXX,xXXX-XXXXXXXX,XXX-XXXXXXXX,XXXXXXXX,XXXXXXXX。
验证身份证号码(15位或18位):\ d {15} | \ d {18} | \ d {17} x美元
验证一年的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。
整数:-?\d美元
非负浮点数(正浮点数0): \ d (\。\ d)?$
浮点数(([0-9] \。[0-9] * [1-9] [0-9] *) | ([0-9] * [1-9] [0-9] * \.[0-9]) | ([0-9]
非正浮点数(负浮点数0) ((-\ d (\)。\ d))?)|(0 (\.0 )?))$
负浮点数(-([0-9] \。[0-9] * [1-9] [0-9] *) | ([0-9] * [1-9] [0-9] * \.[0-9]) | ([0]
浮点数(-?\d )(\。\d)?
0到100之间的数字,小数点后最多两位(?(?0\d)\d{1,2}(?\.\d{1,2})?|100(?\.0{1,2})?)
身份验证html标记/[]/g
三、代码
包括a,b,c吗?
静态void Main(string[] args)
{
//判断是否包含A、B、c三个字符。
string str=控制台。ReadLine();//将用户输入的字符存储到str中
string regex=@ '[ABC]';在//C#中添加@'[abc]'作为正则表达式的基本写法。
bool isMatch=Regex。IsMatch(str,regex);//Compare: IsMatch(待判断字符,正则):返回bool值
控制台。WriteLine(isMatch?匹配[abc]':'不匹配[ABC]');//输出结果
控制台。WriteLine();
}
替换常规开始或结束
静态void Main(string[] args)
{
StringBuilder s=new StringBuilder(' www . Baidu . com ',50);//声明一个容量为50的字符串
//新闻=普通类。Replace string(要处理的字符串,regular,added string) 3354用下面的字符串替换满足正则条件的位置。
//替换开头
News=regex.replace (s.tostring(),'',' URL:');//:表示开始。
控制台。WriteLine(新闻);//输出
//替换结尾
News=regex.replace (s.tostring(),' $ ',' end ');//$:为结束
控制台。WriteLine(新闻);
控制台。ReadLine();
}
匹配除字母、下划线和数字以外的任何字符的开头和结尾。
静态void Main(string[] args)
{
字符串s=控制台。ReadLine();//s接收用户输入
string regex=@'^\w*$';//Regular:以除字母、下划线和数字之外的任何字符开始和结束
bool isMatch=Regex。IsMatch(s,regex);//匹配用户的输入,是否符合常规条件。
控制台。WriteLine(isMatch?满意':'不满意');//三元运算
控制台。WriteLine();
}
替换字符
静态void Main(string[] args)
{
string s=' abcdef
string regex=@'[^bde]';//[BDE]表示除B、D、E以外的所有字符,任何字符。
string newReplace=Regex。Replace(s,regex,“1”);//匹配S中bde以外的字符,替换为1
控制台。WriteLine(new replace);
控制台。WriteLine();
}
匹配QQ号码
静态void Main(string[] args)
{
字符串qq=控制台。ReadLine();//等待用户输入
string regex=@'^\d{5,11}$';//正则:开头和结尾都是数字,5-11位都是数字。
bool isqq=Regex。IsMatch(qq,regex);//判断并返回一个布尔值
控制台。WriteLine(isqq?是QQ号码':'不是QQ号码');//三元运算
控制台。WriteLine();
}
身份验证IP地址
静态void Main(string[] args)
{
string regex=@'^((([1]?\d\d?|2[0-4]\d|25[0-5])\){3}([1]?\d\d?| 2[0-4]\ d | 25[0-5])$ ';//确定IP地址是否兼容。
while(真)
{
字符串s=控制台。ReadLine();//等待用户输入
bool isMatch=Regex。IsMatch(s,regex);//验证ip是否合法。
控制台。WriteLine(isMatch?是IP地址“:”不是IP地址“);//三元运算
}
}
关于C#正则表达式的这篇文章到此为止。希望对大家的学习有帮助,也希望大家多多支持。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。