0

我有一个条件,我想检查文本字段中是否输入了任何特殊字符。

如果没有输入特殊字符,它应该返回 YES。如果在文本字段中输入了特殊字符,则会检查该特殊字符是否来自一组字符。如果输入的特殊字符不是来自特殊字符集,它应该返回 NO。

这是我的代码:

NSCharacterSet *newrang = [[NSCharacterSet characterSetWithCharactersInString:@"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"] invertedSet];
    NSRange newrange = [pwd rangeOfCharacterFromSet:newrang];

    if (!newrange.length)
    {
        return YES;
    }
    else
    {
        NSCharacterSet* set =
        [[NSCharacterSet characterSetWithCharactersInString:@"!@#$%^&*"] invertedSet];
        NSRange checkrange = [pwd rangeOfCharacterFromSet:set];
        if (checkrange.location==NSNotFound)
        {
            NSLog(@"NO");
        }
        else
        {
            NSLog(@"YEs");
        }

            if ([pwd rangeOfCharacterFromSet:set].location == NSNotFound) {
                return NO;
            } else {
                return YES;
            }

    }

我的问题是如果我输入 abc@_123 它会返回 YES。相反,它应该返回 NO 因为无效的特殊字符:

“_”

存在 。

谢谢

4

1 回答 1

2

创建NSCharacterSet您想要阻止的角色,就像我创建的一样alphanumericCharacterSet invertedSetUITextFieldDelegate然后使用 as方法验证每个字符textField:shouldChangeCharactersInRange:replacementString:每当用户在文本字段中键入新字符或删除现有字符时,文本字段都会调用此方法。

回顾这篇希望对你有帮助

NSCharacterSet *blockCharacters = [[NSCharacterSet characterSetWithCharactersInString:@"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#"] invertedSet];    
- (BOOL)textField:(UITextField *)field shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)characters
    {
        return ([characters rangeOfCharacterFromSet:blockCharacters].location == NSNotFound);
    }
于 2014-05-18T12:52:33.237 回答