標籤:
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的學習