正则表达式看起来就是一堆字符串而已,只不过这个字符串的格式比较特殊,我们编写的正则表达式究竟具体是什么含义是由Regex这个类,通过其内部进行语法分析,返回我们想要的结果,正则表达式的编写原则是尽可能的精确而不是尽可能的通用,主要是效率比较高
正则表达式的3种基本应用
1判断字符串是否匹配,其格式为:Regex.IsMatch("字符串","正则表达式");
2字符串提取:Regex.Match("字符串","正则表达式");//只能提取一个
字符串提取:Regex.Matches("字符串","正则表达式");//提取所有匹配的字符串
3字符串替换:Regex.Replace(“字符串”,”正则表达式”,”替换的内容”);
例题1:判断是否是合法的邮政编码(6位数字)
仅验证邮政编码是否为六位数字
"[0-9]”表示0到9的任意字符,"{6}"表示前面的字符必须匹配6次,"[0-9]"可以被\d表示因此"[0-9]{6}"等价于"\d{6}",因此str1字符串验证的是字符串中只要匹配有6位数字的就返回true
@"^\d{6}$"与"^\\d{6}$"表示匹配的字符串必须是以数字开头与结尾,自己测试当str2="中国邮政100088"时是否匹配@"^\d{6}$"与"^\\d{6}$"
所以尽管验证str1与str2字符串的正则表达式结果都为true,但是要匹配的内容不同,以后如果是为验证如手机号,身份证号,邮箱等是否匹配正则表达式最好加上^与$
例题2:判断输入的字符串是否为合法的Email地址
简单验证Email地址
Email地址大致为比如 qwoieu@163或者 qwoieu@163等
正则表达式的编写过程就是分析其大致构成再分别编写例题中简单的正则表达式分为3个部分
1) [a-zA-Z0-9_]+表示匹配任意0-9数字和大小写字母a-z加个下划线,复杂的还加其他的,加号表示中括号中的字符必须出现一次或者多次
2)@[a-zA-Z0-9]+ @是必须的,中括号与加号与1)中的意思一样
3)(\.[a-zA-Z]+)+ 其中[a-zA-Z]+与1)中意思一样
\.与单个字符.意思就不一样了,y因为.在正则表达式中有特殊的含义,因此如果真正想表达.则需要转移为\.
(\.[a-zA-Z]+)+表示小括号中的可以出现一次或者多次比如等