iOS開(kāi)發(fā) 登錄界面(邏輯版)

很多APP都會(huì)構(gòu)建登錄界面懊直,我想分享我在搭建登錄界面時(shí)用到的一些判斷。
  傳送門:iOS開(kāi)發(fā) 登錄界面(界面版)

賬號(hào)

判斷用戶的輸入為郵箱喉刘?


/**
 判斷郵箱地址是否正確

 @param email 郵箱賬號(hào)
 @return 結(jié)果
 */
+ (BOOL) validateEmail:(NSString *)email{
    //去掉所有的空格
    email = [email stringByReplacingOccurrencesOfString:@" " withString:@""];
    
    NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
    return [emailTest evaluateWithObject:email];
}

判斷用戶的輸入為手機(jī)號(hào)歹叮?


/**
 判斷手機(jī)號(hào)碼格式是否正確

 @param mobile 用戶的手機(jī)號(hào)(字符串)
 @return 結(jié)果
 */
+ (BOOL)valiMobile:(NSString *)mobile
{
    //去掉所有的空格
    mobile = [mobile stringByReplacingOccurrencesOfString:@" " withString:@""];
    if (mobile.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: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) {
            return YES;
        }else{
            return NO;
        }
    }
}

判斷用戶的輸入為身份證號(hào)?

/**
 判斷身份證號(hào)是否正確

 @param )identityCard 身份證號(hào)
 @return 結(jié)果
 *
+ (BOOL) validateIdentityCard: (NSString *)identityCard{
    //去掉所有的空格
    identityCard = [identityCard stringByReplacingOccurrencesOfString:@" " withString:@""];
    //身份證的位數(shù)為18位
    if (identityCard.length == 18) {
        NSString *regex = @"^(\\d{14}|\\d{17})(\\d|[xX])$";
        NSPredicate *identityCardPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
        return [identityCardPredicate evaluateWithObject:identityCard];
    }else{
        return NO;
    }
}

判斷賬號(hào)是否同時(shí)包含字符串和數(shù)字

/**
 判斷字符串是否同時(shí)包含字母和數(shù)字
 
 @param numAndChar 字符串
 @return 結(jié)果
 */
-(BOOL)validateWithNumAndChar:(NSString *)numAndChar{
    //去掉所有的空格
    numAndChar = [numAndChar stringByReplacingOccurrencesOfString:@" " withString:@""];
    
    //篩選數(shù)字條件
    NSRegularExpression *NumRegularExpression = [NSRegularExpression regularExpressionWithPattern:@"[0-9]" options:NSRegularExpressionCaseInsensitive error:nil];
    NSUInteger NumMatchCount = [NumRegularExpression numberOfMatchesInString:numAndChar options:NSMatchingReportProgress range:NSMakeRange(0, numAndChar.length)];
    
    if(NumMatchCount == numAndChar.length){
        //純數(shù)字
        return NO;
    }
    
    //篩選字母條件
    NSRegularExpression *LetterRegularExpression = [NSRegularExpression regularExpressionWithPattern:@"[A-Za-z]" options:NSRegularExpressionCaseInsensitive error:nil];
    NSUInteger LetterMatchCount = [LetterRegularExpression numberOfMatchesInString:numAndChar options:NSMatchingReportProgress range:NSMakeRange(0, numAndChar.length)];
    
    if(LetterMatchCount == numAndChar.length){
        //純字母
        return NO;
    }
    
    if(NumMatchCount + LetterMatchCount == numAndChar.length){
        //包含字母和數(shù)字
        return YES;
    }else{
        //包含字母和數(shù)字之外的其他字符
        return NO;
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末坐求,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌碴开,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件博秫,死亡現(xiàn)場(chǎng)離奇詭異潦牛,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)挡育,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門巴碗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人静盅,你說(shuō)我怎么就攤上這事良价。” “怎么了蒿叠?”我有些...
    開(kāi)封第一講書人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵明垢,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我市咽,道長(zhǎng)痊银,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任施绎,我火速辦了婚禮溯革,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘谷醉。我一直安慰自己致稀,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布俱尼。 她就那樣靜靜地躺著抖单,像睡著了一般。 火紅的嫁衣襯著肌膚如雪遇八。 梳的紋絲不亂的頭發(fā)上矛绘,一...
    開(kāi)封第一講書人閱讀 51,301評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音刃永,去河邊找鬼货矮。 笑死,一個(gè)胖子當(dāng)著我的面吹牛斯够,可吹牛的內(nèi)容都是我干的囚玫。 我是一名探鬼主播喧锦,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼抓督!你這毒婦竟也來(lái)了裸违?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤本昏,失蹤者是張志新(化名)和其女友劉穎供汛,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體涌穆,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡怔昨,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了宿稀。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片趁舀。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖祝沸,靈堂內(nèi)的尸體忽然破棺而出矮烹,到底是詐尸還是另有隱情,我是刑警寧澤罩锐,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布奉狈,位于F島的核電站,受9級(jí)特大地震影響涩惑,放射性物質(zhì)發(fā)生泄漏仁期。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一竭恬、第九天 我趴在偏房一處隱蔽的房頂上張望跛蛋。 院中可真熱鬧,春花似錦痊硕、人聲如沸赊级。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)理逊。三九已至,卻和暖如春亭螟,著一層夾襖步出監(jiān)牢的瞬間挡鞍,已是汗流浹背骑歹。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工预烙, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人道媚。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓扁掸,卻偏偏與公主長(zhǎng)得像翘县,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子谴分,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容