iOS開發Regex的學習

來源:互聯網
上載者:User

標籤:

Regex筆記

每天的一小步,知道我在不斷進步,這就是我每天的小目標。 
這是我的第一篇部落格,在工作之餘,我會努力地留下些許腳印。 
我是一名iOS開發人員,對於iOS我僅僅只是一個菜鳥,願意在此處留下我的經驗來協助更多的朋友一起學習,有任何疑問,都歡迎指點和批評。

這是一個Regex基礎篇,並提供了目前比較常用的一些Regex格式。 1.什麼是Regex

Regex提供了一種在指定模式中搜尋匹配的模式,這種模式比對能讓你做更有用的事,如驗證欄位,電話號碼,郵箱地址,檢查使用者輸入,執行更進階的文本操作等等。

2.個人學習筆記

1.行定位器:以”^”表示行的開始,“$”表示行的結尾2.單詞定界符(\b.\B)    \btm\b   匹配包含tm的單詞3.字元類[ ]:匹配tm不區分大小寫:[Tt][Mm]4.選擇字元|:T|tM|m     以T或t開頭,接一個字母M或m5.連字號-:[a-zA-Z]     匹配一個字母6.排除字元 [^]:    [^a-zA-Z]    匹配除了字母和底線7.限定符  ?:  匹配前面的字元0次或1次。colou?r  可以匹配colour和color         +:匹配前面的字元一次或多次。go+gle  可以匹配gogle。。。goo...gle         *:匹配前面的字元0次或多次。       {n}:  匹配前面的字元n次   go{2}gle   匹配google      {n,}:匹配前面的字元最少n次     {n,m}:匹配前面的字元最少n次,最多m次8.點號字元(.):匹配一個單詞,第一個字母為r,第三個字元為s,最後一個字母為t。   ^r.s.*t$9.逸出字元(\): [0-9]{1,3}(\.[0-9]{1,3}){3}10.反斜線   \d:任意一個十進位數字,相當於[0-9]           \D:任意一個非十進位數字           \s:任意一個空白字元(\f\n\r\t)           \w:任意一個單詞字元,相當於[a-zA-Z0-9_]

3.附上常用的iOS使用的Regex代碼

//郵箱驗證 
+ (BOOL)validateEmail:(NSString *)email 

NSString *emailRegex = @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; 
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex]; 
return [emailTest evaluateWithObject:email]; 

//手機號碼驗證 
+ (BOOL)validateMobile:(NSString *)mobile 

//手機號以13, 15,18,17開頭,八個 \d 數字字元 
NSString *phoneRegex = @"^1(3[0-9]|4[57]|5[0-35-9]|7[01678]|8[0-9])\\d{8}$"; 
NSPredicate *phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",phoneRegex]; 
return [phoneTest evaluateWithObject:mobile]; 
}

//車牌號驗證 
+ (BOOL)validateCarNo:(NSString *)carNo 

NSString *carRegex = @"^[\u4e00-\u9fa5]{1}[a-zA-Z]{1}[a-zA-Z_0-9]{4}[a-zA-Z_0-9_\u4e00-\u9fa5]$"; 
NSPredicate *carTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",carRegex]; 
NSLog(@"carTest is %@",carTest); 
return [carTest evaluateWithObject:carNo]; 
}

//車型 
+ (BOOL)validateCarType:(NSString *)CarType 

NSString *CarTypeRegex = @"^[\u4E00-\u9FFF]+$"; 
NSPredicate *carTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",CarTypeRegex]; 
return [carTest evaluateWithObject:CarType]; 
}

//使用者名稱 
+ (BOOL)validateUserName:(NSString *)name 

NSString *userNameRegex = @"^[A-Za-z0-9]{6,20}+$"; 
NSPredicate *userNamePredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",userNameRegex]; 
BOOL B = [userNamePredicate evaluateWithObject:name]; 
return B; 
}

//密碼 
+ (BOOL) validatePassword:(NSString *)passWord 

NSString *passWordRegex = @"^[a-zA-Z0-9]{6,20}+$"; 
NSPredicate *passWordPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",passWordRegex]; 
return [passWordPredicate evaluateWithObject:passWord]; 
}

//暱稱 
+ (BOOL) validateNickname:(NSString *)nickname 

NSString *nicknameRegex = @"^[\u4e00-\u9fa5]{4,8}$"; 
NSPredicate *passWordPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",nicknameRegex]; 
return [passWordPredicate evaluateWithObject:nickname]; 
}

//社會安全號碼 
+ (BOOL) validateIdentityCard: (NSString *)identityCard 

BOOL flag; 
if (identityCard.length <= 0) { 
flag = NO; 
return flag; 

NSString *regex2 = @"^(\\d{14}|\\d{17})(\\d|[xX])$"; 
NSPredicate *identityCardPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex2]; 
return [identityCardPredicate evaluateWithObject:identityCard]; 
}

4.參考連結

Regex升級篇

iOS開發Regex的學習

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.