正则表达式可以说是很烦人的一个东西,但学会了你就会觉得很爽,特别是用在爬虫或者检查输入数据的格式方面
我说一些比较常用的吧,主要有以下几个
- \d判断是否是数字
- \w判断是否是中文或者字母或者数字
- {}连续出现次数的限定(可以一个参数或两个参数,两个参数要要逗号分隔,前面是最小连续次数,后面是最大连续字数)
- ^以什么开头
- $ 以什么结尾
- +连续出现(至少1个)
我这里就以检测邮箱地址和检测手机号格式为例(只演示是否匹配功能)
首先分析邮箱地址组成
邮箱地址=【连续字符】@【连续字符】.com
分析完就开始写代码了
首先加入
using System.Text.RegularExpressions;
然后
string[] eamils={"@57812","@57812@qq.com","57812@163.com"};
//字符串前面加@表示不进行格式转换
//这个模式表示要以至少1个字符开头
//接着有一个@符号
//接着要匹配最小2个最多5个字符
//最后是要匹配.com
string pattern=@"^\w+@\w{2,5}.com";
foreach(string eamil in eamils){
//用Regex.IsMatch判断email是否符合格式
if(Regex.IsMatch(eamil,pattern)){
Console.WriteLine("{0} is a valid email address",eamil);
}else{
Console.WriteLine("{0} is not a valid email address",eamil);
}
}
输出结果
57812 is not a valid email address
57812@qq.com is a valid email address
57812@163.com is a valid email address
如果是检测手机号格式
大家都知道手机号通常是由11位的纯数字组成那就比邮箱要简单
string[] phoneNums={"123465","dasdas132123123","13631341338","abc13631341338","13631341338a"};
//这个模式表示要和11个连续数字开头和11个连续数字结尾匹配
string pattern=@"^\d{11}$";
//也可以写成
//string pattern=@"^\d\d{9}\d$";
//由1个数字开头和9个连续数字还有1个数字结尾
foreach(string num in phoneNums){
if(Regex.IsMatch(num,pattern)){
Console.WriteLine("{0} is a valid TEL num",num);
}else{
Console.WriteLine("{0} is not a valid TEL nums",num);
}
}
输出结果
123465 is not a valid TEL nums
dasdas132123123 is not a valid TEL nums
13631341338 is a valid TEL num
abc13631341338 is not a valid TEL nums
13631341338a is not a valid TEL nums
不得不说别看正则表示式看起来很乱,其实还是蛮简单的,但学会了你就会觉得正则表达式是如此的强大