關于手機號,郵箱號的正則表達式

目前的App,除了第三方登錄外,常用的登錄方式就是手機號和郵箱帳號登錄。

至于帳號的注冊,驗證碼的發(fā)送,都是返回給后臺之后由后臺來完成的,這里不做說明。

文章的最后還會對文本框的輸入判斷進行一些說明,配合使用。


手機號判斷
if (mobile.length == 11) {
            // 移動號段正則表達式
            NSString * CM_NUM = @"^((13[4-9])|(147)|(15[0-2,7-9])|(178)|(18[2-4,7-8]))\\d{8}|(1705)\\d{7}$";
            // 聯通號段正則表達式
            NSString * CU_NUM = @"^((13[0-2])|(145)|(15[5-6])|(176)|(18[5,6]))\\d{8}|(1709)\\d{7}$";
            // 電信號段正則表達式
            NSString * CT_NUM = @"^((133)|(153)|(177)|(18[0,1,9]))\\d{8}$";
            
            NSPredicate *pred1 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CM_NUM];
            BOOL isMatch1 = [pred1 evaluateWithObject:mobile];
            NSPredicate *pred2 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CU_NUM];
            BOOL isMatch2 = [pred2 evaluateWithObject:mobile];
            NSPredicate *pred3 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CT_NUM];
            BOOL isMatch3 = [pred3 evaluateWithObject:mobile];
            
            if (isMatch1 || isMatch2 || isMatch3) {
                isPhone = YES;
            } else {
                [LDCreateUITool showMaskOfTitle:@"請輸入正確的手機號/郵箱"];
            }
        }else{

        }
郵箱判斷
if ([mobile containsString:@"@"]) {
        NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
        NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",  emailRegex];
        BOOL isEmail = [emailTest evaluateWithObject:mobile];
        
        if (isEmail) {
            isEmail = YES;
        } else {
            isEmail = NO;
        }
    } 

由于是同一個文本框去判斷的,所以才用有沒有"@"來區(qū)分郵箱和手機號。

這里還要做一些說明,那就是關于文本框的輸入判斷。
一般來說,為了用戶體驗我們都是調用文本框的代理方法

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;

來進行實時的監(jiān)控,或者用

-(void)textFieldDidEndEditing:(UITextField *)textField;

來等文本框失去焦點后判斷,不過一般不用這個方法。

由于我們的程序中這兩種方法使用起來都有點問題,所以改用通知的方法,其實這個通知的名字也是系統(tǒng)的

// 注冊通知
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(phoneTextFiledEditChanged:) name:@"UITextFieldTextDidChangeNotification" object:self.phoneNumField];
// 這個通知里邊的name,我們可以點擊進去看,是UITextField.h里邊系統(tǒng)自己的

// 1.帳號框的監(jiān)聽
- (void)phoneTextFiledEditChanged:(NSNotification *)notification
{
    if (notification.object != self.phoneField) {
        return;
    }
}

以上。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,769評論 25 709
  • 社交紅利閱讀筆記 書名:社交紅利(修訂升級版) 作者:徐志斌 出版社:中信出版社 正文前筆記: 推薦序1摘要 社交...
    鳧水閱讀 9,342評論 4 26
  • 點擊查看原文 Web SDK 開發(fā)手冊 SDK 概述 網易云信 SDK 為 Web 應用提供一個完善的 IM 系統(tǒng)...
    layjoy閱讀 14,283評論 0 15
  • 這是什么?碼農們文字女青誰主沉浮能猜到這是什么嗎?!
    sophiy閱讀 367評論 6 1
  • 每次一個人過節(jié),一個人學習,一個人走路,一個人工作的時候總會無比孤獨,總是感覺缺少點什么~這時候我會偷偷的流兩滴眼...
    宮先生的小妞閱讀 206評論 0 0

友情鏈接更多精彩內容