ios正在验证某些字符的文本字段输入

ios正在验证某些字符的文本字段输入,ios,validation,uitextfield,Ios,Validation,Uitextfield,我对ios开发非常陌生。在验证文本字段时,我必须确保它只包含0-9和特殊字符,如*和#。请帮帮我 - (BOOL)validate:(NSString *)string{ NSString *exp = @"^([0-9]+)?(\\.([0-9]{1,2})?)?$"; NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:exp options:NSRegularExpre

我对ios开发非常陌生。在验证文本字段时,我必须确保它只包含0-9和特殊字符,如*和#。请帮帮我

- (BOOL)validate:(NSString *)string{
    NSString *exp = @"^([0-9]+)?(\\.([0-9]{1,2})?)?$";
    NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:exp options:NSRegularExpressionCaseInsensitive error:nil];
    NSUInteger numberOfMatches = [regex numberOfMatchesInString:string options:0 range:NSMakeRange(0, [string length])];
    if (numberOfMatches == 0)
        return NO;
    return YES;
}
试试这个:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string  {

    NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:@"0123456789*#"] invertedSet];

    NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];

    return [string isEqualToString:filtered];
}
你可以试试这个:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string  {

NSCharacterSet *numberAndSpecialCharsSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789*#"];

return ([string rangeOfCharacterFromSet:numberAndSpecialCharsSet].location==NSNotFound);

}

您试过任何东西、任何代码吗?您可以设置键盘类型,使其仅包含数字和特殊字符。看这里:但在ipad中,用户可以选择更改键盘。它在数字键盘中有一个ABC选项。这可能有助于@user2932169在正文中添加代码而不是注释。它应该更具可读性。