正則表達(dá)式可以說是很煩人的一個(gè)東西按傅,但學(xué)會(huì)了你就會(huì)覺得很爽媳拴,特別是用在爬蟲或者檢查輸入數(shù)據(jù)的格式方面
我說一些比較常用的吧,主要有以下幾個(gè)
- \d判斷是否是數(shù)字
- \w判斷是否是中文或者字母或者數(shù)字
- {}連續(xù)出現(xiàn)次數(shù)的限定(可以一個(gè)參數(shù)或兩個(gè)參數(shù),兩個(gè)參數(shù)要要逗號(hào)分隔侵佃,前面是最小連續(xù)次數(shù),后面是最大連續(xù)字?jǐn)?shù))
- ^以什么開頭
- $ 以什么結(jié)尾
- +連續(xù)出現(xiàn)(至少1個(gè))
我這里就以檢測(cè)郵箱地址和檢測(cè)手機(jī)號(hào)格式為例(只演示是否匹配功能)
首先分析郵箱地址組成
郵箱地址=【連續(xù)字符】@【連續(xù)字符】.com
分析完就開始寫代碼了
首先加入
using System.Text.RegularExpressions;
然后
string[] eamils={"@57812","@57812@qq.com","57812@163.com"};
//字符串前面加@表示不進(jìn)行格式轉(zhuǎn)換
//這個(gè)模式表示要以至少1個(gè)字符開頭
//接著有一個(gè)@符號(hào)
//接著要匹配最小2個(gè)最多5個(gè)字符
//最后是要匹配.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);
}
}
輸出結(jié)果
57812 is not a valid email address
57812@qq.com is a valid email address
57812@163.com is a valid email address
如果是檢測(cè)手機(jī)號(hào)格式
大家都知道手機(jī)號(hào)通常是由11位的純數(shù)字組成那就比郵箱要簡單
string[] phoneNums={"123465","dasdas132123123","13631341338","abc13631341338","13631341338a"};
//這個(gè)模式表示要和11個(gè)連續(xù)數(shù)字開頭和11個(gè)連續(xù)數(shù)字結(jié)尾匹配
string pattern=@"^\d{11}$";
//也可以寫成
//string pattern=@"^\d\d{9}\d$";
//由1個(gè)數(shù)字開頭和9個(gè)連續(xù)數(shù)字還有1個(gè)數(shù)字結(jié)尾
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);
}
}
輸出結(jié)果
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
不得不說別看正則表示式看起來很亂奠支,其實(shí)還是蠻簡單的馋辈,但學(xué)會(huì)了你就會(huì)覺得正則表達(dá)式是如此的強(qiáng)大