0

代码片段

   NSString *myRegex = @"[A-Z0-9a-z]*";
    NSPredicate *myTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", myRegex];
    NSString *string = [NSString stringWithString:NewPassword.text];
    BOOL valid = [myTest evaluateWithObject:string];

我只想验证 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 这些东西

假设客户输入特殊字符(@、#、&、.、}、{、*、: 等)。无需验证和接受字符

前任 :

密码:1234567 密码:qwerty - 需要显示警报

期望输出:密码:123qwerty45 - 无需显示警报

密码:1234qwer@#$% - 接受密码

无需检查特殊字符

提前致谢

4

6 回答 6

2

尝试以下方法:

- (BOOL)textField:(UITextField *)field shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)characters
{
    if ([replacementString rangeOfCharacterFromSet:[[NSCharacterSet alphanumericCharacterSet] invertedSet]].location != NSNotFound) {
        // There are non-alphanumeric characters in the replacement string
     }
}
于 2013-09-06T12:00:29.597 回答
2

以下代码可能会对您有所帮助。

NSCharacterSet * set = [[NSCharacterSet characterSetWithCharactersInString:@"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLKMNOPQRSTUVWXYZ0123456789"] invertedSet];
if ([NewPassword.text rangeOfCharacterFromSet:set].location == NSNotFound)
{
    NSLog(@"NO SPECIAL CHARACTER");
}
else
{
    NSLog(@"HAS SPECIAL CHARACTER");
}
于 2013-09-06T12:06:43.380 回答
0

以下方法可能对您有所帮助:

NSString *string = iTextField.text;
NSCharacterSet *alphanumSet = [NSCharacterSet alphanumCharSet];
NSCharacterSet *numberSet = [NSCharacterSet decimalDigitCharSet];
BOOL isValid= [[string stringByTrimmingCharactersInSet:alphanumSet] isEqualToString:@""] && ![[string stringByTrimmingCharactersInSet:numberSet] isEqualToString:@""];
于 2013-09-06T12:02:00.233 回答
0

要限制在文本字段中输入数据,您应该在**shouldChangeCharactersInRange**方法中定义它

#define VALID_CHARECTERS @"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
   NSCharacterSet *validInput = [NSCharacterSet characterSetWithCharactersInString:VALID_CHARECTERS];

   if (![[string componentsSeparatedByCharactersInSet:avalidInput] count] > 1)
      return NO;
   else
      return YES;
}

其中 VALID_CHARECTERS 可以是您想要包含的任何内容

于 2013-09-06T12:02:02.420 回答
0

假设 #$% 是您想要的特殊字符。您至少需要一个特殊字符,并可以将其与字母数字字符混合。

您的正则表达式将类似于: ([A-Z0-9a-z]*(#|$|%)+[A-Z0-9a-z]*)+

于 2013-09-06T12:02:40.827 回答
0
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{



    NSCharacterSet *ss = [[NSCharacterSet alphanumericCharacterSet]invertedSet];


    if ([string isEqualToString:@""]) 
    {

        NSString *trimmedReplacement =
        [[ string  componentsSeparatedByCharactersInSet:ss]
         componentsJoinedByString:@""];

    }
    else 
    {
        return ([string stringByTrimmingCharactersInSet:ss].length > 0);
    }

}

return YES;
}

让我知道它是否有效!

快乐编码!!!

于 2013-09-06T12:04:59.363 回答