正则表达式
英文Regular Expression,是计算机科学的一个重要概念,她使用一种数学算法来解决计算机程序中的文本检索,匹配等问题,正则表达式语言是一种专门用于字符串处理的语言。在很多语言中都提供了对它的支持,c#也不例外
两个功能:
检索:从字符串中获取想要的部分
匹配:判断字符串是否符合正则表达式的的过滤逻辑
常用的用法:可以判断用户输入的密码或邮箱格式是否合法等
正则表达式就是有普通字符以及特殊字符组成 的文字模式。特殊字符即是元字符
\ 转义字符,如果要表示\ 则用\\
@符号,在正则表达式前面添加@字符,这样表示不让编译器去解析其中的转义字符,而作为正则表达式的语法存在
定位符
^ 匹配字符串的开始位置
$ 匹配字符串的结束位置
\b 匹配一个单词的边界
\B 匹配非单词边界
例子:匹配开始和结束
string str = "World";
//匹配开始的位置,替换成指定字符串
string res = Regex.Replace(str, "^", "Hello ");//输出Hello World
//匹配结束的位置,替换成指定字符串
string res2 = Regex.Replace(str, "$", "!");//输出World!
. 匹配除换行符以外的任意字符
\w 匹配字母、数字、下划线、汉字 (指大小写字母、0-9的数字、下划线_)
\W \w的补集 ( 除“大小写字母、0-9的数字、下划线_”之外)
\s 匹配任意空白符 (包括换行符/n、回车符/r、制表符/t、垂直制表符/v、换页符/f)
\S \s的补集 (除\s定义的字符之外)
\d 匹配数字 (0-9数字)
\D 表示\d的补集 (除0-9数字之外)
例子:只允许输入数字
Regex.IsMatch(input, @"^\d*$");
[abc] 表示匹配a,或匹配b,或匹配c
[a-c] 表示匹配a到c之间的字符
[^x] 表示匹配除了x以外的字符
例子:代替除了ace之外的任意字符为*
string str = "abcdef";
string pattern = @"[^ace]";//代表一个字符,除了ace之外的任意字符
string res = Regex.Replace(str, pattern, "*");//代替除了ace之外的任意字符为*
//结果为 a*c*e*
限定符
* 表示出现0个或多次
+ 表示出现1次或多次
? 表示出现0次或1次
{n} 表示出现n次,n表示一个非负整数
{n,} 表示至少出现n次
{n,m} 表示出现n次到m次
例子:验证输入的是否为合法的QQ号(备注:QQ号为5-12位数字)
string qq1 = "123", qq2 = "397458006",qq3="abc123456";
string pattern = @"^\d{5,12}$";
bool isMatch1 = Regex.IsMatch(qq1, pattern);//false
bool isMatch2 = Regex.IsMatch(qq2, pattern);//true
bool isMatch3 = Regex.IsMatch(qq3, pattern);//false
择一匹配
| 字符,将两个匹配条件进行逻辑或运算
例子:查找数字或字母
string str = "123哈哈abc啊啊";
string pattern = @"\d|[a-z]";
MatchCollection col = Regex.Matches(str, pattern);
foreach (Match match in col)
{
Console.WriteLine(match);
}
结果为
分组
使用小括号()
例子:单个字符重复两次替换为**
string str = "aabbaaacccaaaa";
string pattern = @"a{2}";
string res = Regex.Replace(str, pattern, "**");
//结果为 **bb**accc****
例子:校验IP4地址
string pattern = @"^(((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?))$";
相关链接: