重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)
好久沒有更新了,發(fā)現(xiàn)好多簡(jiǎn)友還在不停的關(guān)注,感覺很對(duì)不起大家?,F(xiàn)在對(duì)這篇正則進(jìn)行下更新,修正下不對(duì)的地方。感謝大家的支持!
創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站建設(shè)、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的梨林網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
我們先對(duì)正則表達(dá)式語法做一個(gè)簡(jiǎn)單的說明,這樣方便理解。網(wǎng)上關(guān)于正則的資料很多很多,我在這里只做下整理
我們先來舉個(gè)例子分析一個(gè)可以匹配幾種格式的電話號(hào)碼,像(010)88886666,或022-22334455,或02912345678等的表達(dá)式
表達(dá)式: \\(?0\d{2}[) -]?\d{8}
(?=.*\d)(?=.*[a-zA-Z])(?=.*[~`!@#$%^*()-_+={[}]|\\:;"',.?/])[\da-zA-Z~`!@#$%^*()-_+={[}]|\\:;"',.?/]{6,20}
有如下正則表達(dá)式:
強(qiáng)密碼(必須包含大小寫字母和數(shù)字的組合,不能使用特殊字符,長(zhǎng)度在 8-10 之間): ^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,10}$
使用如上正則表達(dá)式驗(yàn)證的時(shí)候發(fā)現(xiàn)沒有達(dá)到自己想要的效果,那是因?yàn)樯厦娴?\d 會(huì)被當(dāng)成轉(zhuǎn)義字符來對(duì)待,XCode警告 Unknown escape sequence '\d' ,如下:
最后po如上字符串的時(shí)候發(fā)現(xiàn)po出來的是 ^(?=.*d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,10}$ ,少了 \ 正因?yàn)槿绱?,所以正則的校驗(yàn)就不成功了。
解決辦法,就是在 \d 前面再加個(gè) \ ,不讓他轉(zhuǎn)義,如下:
這樣正則的校驗(yàn)就正確了。
// 判斷是否是手機(jī)號(hào)
+ (BOOL)isValidPhone:(NSString *)phone
{
if (phone.length != 11)
{
return NO;
}else{
/**
* 移動(dòng)號(hào)段正則表達(dá)式
*/
NSString *CM_NUM = @"^((13[4-9])|(147)|(15[0-2,7-9])|(178)|(18[2-4,7-8]))\\d{8}|(1705)\\d{7}$";
/**
* 聯(lián)通號(hào)段正則表達(dá)式
*/
NSString *CU_NUM = @"^((13[0-2])|(145)|(15[5-6])|(176)|(18[5,6]))\\d{8}|(1709)\\d{7}$";
/**
* 電信號(hào)段正則表達(dá)式
*/
NSString *CT_NUM = @"^((133)|(153)|(177)|(18[0,1,9]))\\d{8}$";
NSPredicate *pred1 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CM_NUM];
BOOL isMatch1 = [pred1 evaluateWithObject:phone];
NSPredicate *pred2 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CU_NUM];
BOOL isMatch2 = [pred2 evaluateWithObject:phone];
NSPredicate *pred3 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CT_NUM];
BOOL isMatch3 = [pred3 evaluateWithObject:phone];
if (isMatch1 || isMatch2 || isMatch3) {
return YES;
}else{
return NO;
}
}
}