歡迎大家一起交流 QQ群 139852091
昨天項(xiàng)目上線了,上線之前老板提出一個(gè)要求瓤鼻,登陸密碼不能設(shè)置過于簡單的,不能輸入連續(xù)的字符贤重,沒辦法茬祷,加班改吧
思路:
1、正則:
正則表達(dá)式不用說并蝗,百度一搜一大堆祭犯,別告訴我不會(huì)搜,這我可幫不了你滚停,好吧還是幫幫你吧度娘的百度一下你就知道(只能幫到這里了沃粗,別的真幫不到你了)
2、連續(xù)輸入:
我們怎么判斷連續(xù)輸入呢键畴,連續(xù)輸入也就是如下樣式
111111
qqqqqq
ZZZZZZ
判斷這個(gè)連續(xù)輸入有兩種辦法最盅,一在文本輸入框的代理方法中TextFieldDelegate
也就是下面那哥們
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
二自己計(jì)算字符串,也就是截取字符串镰吵,比較字符串檩禾,我們來說一下這個(gè)怎么截,怎么算
我們先定義一個(gè)count ?這個(gè)用于判斷幾個(gè)有幾個(gè)相同的字符串了疤祭,然后我們開始截取字符串
屁話不多說了盼产,直接貼上代碼吧
注釋已經(jīng)很詳細(xì)了,就不做過多的解釋
3勺馆、輸入過于簡單:
什么叫輸入過于簡單呢戏售,我的理解就是什么 ?111111 ?123456 ?654321 ?等,這個(gè)我們做字符串比較就可以了
總結(jié):
把如上方法寫成一個(gè)類方法草穆,就能完成功能了灌灾,下面我貼出代碼
+ (BOOL) password:(NSString *)password
{
NSString *pattern = @"[a-zA-Z0-9]{6,19}+$";
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern];
BOOL isMatch = [pred evaluateWithObject:password];
if (isMatch) {
int count = 0;
NSString *newPassword = [password substringToIndex:1];
for (int i = 0; i < password.length; i++) {
NSString *newPassword1;
if (i == 0) {
newPassword1 = [password substringToIndex:i + 1]; //當(dāng) i 為 0 的時(shí)候? 取下表為 1 的字符串
}else{
//當(dāng) i 大于 0 時(shí) 我們?nèi)∠聵?biāo)為 i + 1 新的string.length 為 i 個(gè) 所有我們再從后面往前面取
newPassword1 = [[password substringToIndex:i + 1] substringFromIndex:i];
}
if ([newPassword1 isEqualToString:newPassword]) {
count++;
}
}
if (count == password.length) {
return NO; // 這里說明 count個(gè)相同的字符串,也就是所有密碼輸入一樣了
}
if ([password isEqualToString:@"123456"] ||
[password isEqualToString:@"qwerty"] ||
[password isEqualToString:@"654321"]) return NO;
}
return isMatch;
}
好了悲柱,有需要的拿去锋喜,想謝我的加群聊
歡迎大家一起交流 QQ群 139852091