iOS中系統(tǒng)通訊錄帶過(guò)來(lái)的電話驗(yàn)證(有坑)

項(xiàng)目中有要輸入電話的地方,要求提交的時(shí)候進(jìn)行校驗(yàn)為手機(jī)號(hào)碼。

其實(shí)就是特殊處理一下通訊錄中帶來(lái)的帶有+86的電話(類似+86?185 xxxx xxxx),然后進(jìn)行正則匹配。直接上代碼。


NSString *telNumber = self.visitorDetailModel.Customer_Tel;

//去除號(hào)碼中的空格

telNumber = [telNumberstringByReplacingOccurrencesOfString:@" " withString:@""];

if([telNumberhasPrefix:@"+86"]) {//如果號(hào)碼中帶有+86,去除+86

? ? ? ? telNumber = [telNumbersubstringFromIndex:3];

}

if (![GMUtilityTool isMobileNumber:telNumber]){//正則匹配是否為正確的手機(jī)號(hào)碼

UIAlertController *vc = [UIAlertController alertControllerWithTitle:@"提示" message:@"請(qǐng)輸入正確的手機(jī)號(hào)碼" preferredStyle:UIAlertControllerStyleAlert];

? ? ? ? UIAlertAction *action = [UIAlertAction actionWithTitle:@"確定" style:UIAlertActionStyleDefault handler:nil];

? ? ? ? [vc addAction:action];

? ? ? ? [self presentViewController:vc animated:YES completion:nil];

}


//判斷是否為正確的手機(jī)號(hào)碼的正則

+ (BOOL)isMobileNumber:(NSString*)mobileNum

{

? ? NSString *phoneRegex = @"^1[3456789]\\d{9}$";

? ? NSPredicate *phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",phoneRegex];

? ? return [phoneTestevaluateWithObject:mobileNum];

}


OK,基本上面這樣就完事了。但是最近有用戶在用的時(shí)候反饋輸了正確的11位號(hào)碼,還是不通過(guò),依舊提示請(qǐng)輸入正確的手機(jī)號(hào)碼,并且測(cè)試也沒(méi)測(cè)出來(lái)。

測(cè)試認(rèn)為有空格存在,我說(shuō)我處理了空格,不可能有問(wèn)題的,反復(fù)復(fù)制粘貼過(guò)來(lái)帶空格的號(hào)碼試驗(yàn),依舊沒(méi)事。

最后反復(fù)試了所有的可能之后,發(fā)現(xiàn)從系統(tǒng)通訊錄帶過(guò)來(lái)的帶有+86的號(hào)碼(類似+86?185 xxxx xxxx)的不能通過(guò),所以我懷疑這里面的空格并不是我們平時(shí)手動(dòng)輸入的空格。

用打印地址的方式進(jìn)行了驗(yàn)證

我們可以看到后面兩個(gè)手輸?shù)目崭竦刂芬粯?,但是第一個(gè)從電話里粘貼過(guò)來(lái)的“空格”地址卻不一樣。這貨是一個(gè)長(zhǎng)的跟空格一樣的其他字符。

。。。。。。

沒(méi)辦法在代碼處多加了一行


//去除手動(dòng)輸入的空格

telNumber = [telNumberstringByReplacingOccurrencesOfString:@" " withString:@""];

//去除通訊錄帶來(lái)的坑逼"空格"

telNumber = [telNumberstringByReplacingOccurrencesOfString:@"?" withString:@""];

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容