首先簡單介紹一下正規表示式的基本寫法及用法
\d 匹配任何乙個數字,即[0-9]
\d+表示1個以上的數字
\d*標示0個或多個數字
\s 表示分隔符,包括空格、製表符和換行符
\s* 0個或多個分隔符
\w 表示字母、數字和下劃線,這裡還包括unicode字元,不同的語言裡有些不同
\w 表示4個非空白字元
. 表示任何乙個字元,不包括換行符
.* 表示任何多個字元,當然也不包括換行符了
^([0-9]) 表示數字開頭
([0-9])$ 表示數字結尾
([0-9a-za-z]) 表示數字字母
| 表示或的關係,如\d|\w 表示數字或字母
(.|[\r\n])* 表示任何多個字元,包括換行符,貪婪掃瞄
(.|[\r\n])*? 表示任何多個字元,包括換行符,懶惰掃瞄
(?:.|[\\r\\n]) 以(?:開頭時的分組資訊,表示不讀取到緩衝器裡,避免rangeatindex呼叫時產生***,後面還會遇到這樣的(?:寫法
@implementation tsregularexpressionutil//郵箱
+ (bool) validateemail:(nsstring *)email
"; nspredicate *emailtest = [nspredicate predicatewithformat:@"self matches %@", emailregex];
return [emailtest evaluatewithobject:email];
}//手機號碼驗證
+ (bool) validatemobile:(nsstring *)mobile
$"; nspredicate *phonetest = [nspredicate predicatewithformat:@"self matches %@",phoneregex];
return [phonetest evaluatewithobject:mobile];
}//車牌號驗證
+ (bool) validatecarno:(nsstring *)carno
[a-za-z][a-za-z_0-9][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
//使用者名稱
+ (bool) validateusername:(nsstring *)name
+$";
nspredicate *usernamepredicate = [nspredicate predicatewithformat:@"self matches %@",usernameregex];
bool b = [usernamepredicate evaluatewithobject:name];
return b;
}//密碼
+ (bool) validatepassword:(nsstring *)password
+$";
nspredicate *passwordpredicate = [nspredicate predicatewithformat:@"self matches %@",passwordregex];
return [passwordpredicate evaluatewithobject:password];
}//暱稱
+ (bool) validatenickname:(nsstring *)nickname
)(·[\u4e00-\u9fa5])*";
nspredicate *passwordpredicate = [nspredicate predicatewithformat:@"self matches %@",nicknameregex];
return [passwordpredicate evaluatewithobject:nickname];
}//身份證號
+ (bool) validateidentitycard: (nsstring *)identitycard
nsstring *regex2 = @"^(\\d|\\d)(\\d|[xx])$";
nspredicate *identitycardpredicate = [nspredicate predicatewithformat:@"self matches %@",regex2];
return [identitycardpredicate evaluatewithobject:identitycard];
}//銀行卡
+ (bool) validatebankcardnumber: (nsstring *)bankcardnumber
nsstring *regex2 = @"^(\\d)";
nspredicate *bankcardpredicate = [nspredicate predicatewithformat:@"self matches %@",regex2];
return [bankcardpredicate evaluatewithobject:bankcardnumber];
}//銀行卡後四位
+ (bool) validatebankcardlastnumber: (nsstring *)bankcardnumber
nsstring *regex2 = @"^(\\d)";
nspredicate *bankcardpredicate = [nspredicate predicatewithformat:@"self matches %@",regex2];
return [bankcardpredicate evaluatewithobject:bankcardnumber];
}//cvn
+ (bool) validatecvncode: (nsstring *)cvncode
nsstring *regex2 = @"^(\\d)";
nspredicate *cvncodepredicate = [nspredicate predicatewithformat:@"self matches %@",regex2];
return [cvncodepredicate evaluatewithobject:cvncode];
}//month
+ (bool) validatemonth: (nsstring *)month
nsstring *regex2 = @"(^(0)([0-9])$)|(^(1)([0-2])$)";
nspredicate *monthpredicate = [nspredicate predicatewithformat:@"self matches %@",regex2];
return [monthpredicate evaluatewithobject:month];
}//month
+ (bool) validateyear: (nsstring *)year
nsstring *regex2 = @"^([1-3])([0-9])$";
nspredicate *yearpredicate = [nspredicate predicatewithformat:@"self matches %@",regex2];
return [yearpredicate evaluatewithobject:year];
}//verifycode
+ (bool) validateverifycode: (nsstring *)verifycode
nsstring *regex2 = @"^(\\d)";
nspredicate *verifycodepredicate = [nspredicate predicatewithformat:@"self matches %@",regex2];
return [verifycodepredicate evaluatewithobject:verifycode];
}@end
幾種常見的正規表示式
d 非負整數 正整數 0 0 9 1 9 0 9 正整數 d 0 非正整數 負整數 0 0 9 1 9 0 9 負整數 d 整數 d d 非負浮點數 正浮點數 0 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 正浮點數 d d 0 0 非正浮點數 負浮點數 ...
幾種常用的數字正規表示式
只能輸入1個數字 表示式 d 描述 匹配乙個數字 匹配的例子 0,1,2,3 不匹配的例子 只能輸入n個數字 表示式 d 例如 d 描述 匹配8個數字 匹配的例子 12345678,22223334,12344321 不匹配的例子 只能輸入至少n個數字 表示式 d 例如 d 描述 匹配最少n個數字 ...
正規表示式幾種常用方法介紹
1 exec 方法是乙個正規表示式方法,用於檢索字串中的正規表示式的匹配。函式返回乙個陣列中,其中陣列中存放匹配的結果 如果未找到匹配,則返回值為null。2 test 方法是乙個正規表示式方法,用於檢測乙個字串是否匹配某個模式,如果字串中含有匹配的文字,則返回true,否則返回false。3 se...