0

我需要验证人们在我的应用程序中登录时使用的用户名。例如:

Peter$@ 无效,但 peter123 有效

如果用户名包含 .!#$%&'*+-/=?^_`{|}~@,; 在他的名字上,应该出现一个 alertView 来通知用户

我必须像这样比较字符串吗?

-(BOOL) checkIfUsernameValidation{
    NSString *_username = playerName.text;
    NSString *expression = @".!#$%&'*+-/=?^_`{|}~@,;";

    if(![_username compare:expression]){
        return YES;
    }
    else
        return NO;
}

谢谢

4

4 回答 4

4

一种方法是使用NSCharacterSet

例如,创建一个包含您允许的所有字符的字符集,然后查看您的文本字段并使用如下内容:

NSCharacterSet * characterSetFromTextField = [NSCharacterSet characterSetWithCharactersInString: yourTextField];
if([[NSCharacterSet alphanumericCharacterSet] isSupersetOfSet: characterSetFromTextField] == NO)
{
    NSLog( @"there are bogus characters here, throw up a UIAlert at this point");
    return;
}

我使用了 alphanumericCharacterSet,但您可以使用" characterSetWithCharactersInString"轻松创建自己的所有允许字符的字符集。

于 2013-08-01T19:16:05.580 回答
0

假设您使用的是UITextField,您可以充当委托人并实施textField:shouldChangeCharactersInRange:replacementString:,然后使用rangeOfCharacterFromSet:从您的不允许字符字符串创建的字符集。如果找到有效范围,则您可以在用户输入无效字符后立即显示警报。

于 2013-08-01T19:14:08.227 回答
0
-(BOOL) checkIfUsernameValidation{
    NSString *_username = playerName.text;

    NSCharacterSet * set = [[NSCharacterSet characterSetWithCharactersInString:@".!#$%&'*+-/=?^_`{|}~@,;"] invertedSet];

    if ([_username rangeOfCharacterFromSet:set].location != NSNotFound){
        return YES;
    }
    else
        return NO;
    }
}
于 2013-08-01T19:28:02.153 回答
0
- (BOOL)isValidUsername {
  NSCharacterSet *set = [NSCharacterSet
      characterSetWithCharactersInString:@".!#$%&'*+-/=?^_`{|}~@,;"];

  return [self rangeOfCharacterFromSet:set].location == NSNotFound;
}
于 2015-04-30T12:20:45.567 回答