正则表达式
普通字符与特殊字符组成的特殊表达式,用来描述字符的特征 对字符串进行操作
元字符
.除\n以外的任意单个字符 .出现在字符组就表示一个普通的点 \.转义成普通的点
[] 字符组 a[x,y,z]b 在中括号中的字符任意取一个 a[a-z A-Z 0-9]b
| 表示“或”的意思 “或”的优先级最低
()改变优先级,或者表示提取组5
*限定前面的表达式出现0次或多次 a.*b 表示.可以出现n次,至少得出现一次
a.?b ?表示出现0次或者1次 终止贪婪模式
[0-9]{8} 限定数字出现8次
[0-9]{4,}限定最少四位数字,最多不限定
[0-9]{4,9}最少四次,最多九次
^hl 表示字符串必须以h开头并且后面跟一个l
oo$ 表示必须以oo结尾
[0-9]+
\d+ [0-9]
\D 非数字字符
\w[a-zA-Z0-9]
\W 除了w
\s 表示所有不可见字符
\S
\b 单词的边界
下面三个都表示任意单个字符
[\s\S]
[\d\D]
[\w\W]
Regex.IsMatch()//用来判断给定的字符串是否匹配某个正则表达式
Regex.Match()//用来从给定的字符串中按照正则表达式的要求提取一个匹配的字符串
Regex.Matches()//用来从给定的字符串中按照正则表达式的要求提取所有匹配的字符串
Regex.Replace()//替换所有正则表达式匹配的字符串为另外一个字符串
while(true)
{
Console.WriteLine("请输入一个字符串");
string str=Console.ReadLine();
bool b=Regex.IsMatch(str,"[0-9]{6}");//用引号,有一小段匹配就返回true要完全匹配要用开始^和$结束符
}
while(true)
{
Console.WriteLine("请用户输入一个10-25之间的任何一个数字");
string n=Console.ReadLine();
bool b=Regix.IsMatch(n,"^(1[0-9]|2[0-5])$");
Console.WriteLine(b);
}
.net默认使用 Unicode匹配模式 其实就是全角输入
string msg="1 2 3";
bool b=Regex.IsMatch(msg,@"\d+",RegexOptions.ECMAScript);
ip地址的正则表达式:@"^([0-9]{1,3}\.){3}[0-9]{1,3}$")
判断合法日期 @:^[0-9]{4}-(0[1-9]|1[0-2])-[0-9]{2}$"
\d既能匹配1,2..等ASCII数字,也能匹配全角数字
\w既能匹配[a-zA-Z0-9]也能匹配中文
\s既能匹配"英文空格",制表符等,也能匹配全角空格
如果只想匹配ASCII字符,则需要指定RegexOption.ECMAScript选项