1

在我的应用程序中,我只想接受NSStrings仅包含以下字符的内容:

  • 阿兹
  • 0-9
  • AZ
  • 空间(十二月:32)

有什么资格NSRegularExpression承认这一点?

提前致谢!

真诚的,佐利

4

4 回答 4

3
NSRegularExpression *regex =
    [NSRegularExpression regularExpressionWithPattern:@"[a-zA-Z0-9 ]*"
                                              options:...
                                                error:...];

如果您想要至少一个字符,请使用+而不是*.

于 2013-05-28T10:52:29.170 回答
3

你可以使用这个:

-(BOOL) NSStringIsValid:(NSString *)checkString
{
   NSString *stricterFilterString = @"[A-Z0-9a-z ]*";

   NSPredicate *stringTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", stricterFilterString];
   return [stringTest evaluateWithObject:checkString];
}

如果有效则返回 YES,否则返回 NO。

希望它可以帮助你。

于 2013-05-28T10:52:30.633 回答
1

我从未在 iOS 上使用过正则表达式,但根据文档,以下应该可以工作

[a-z0-9A-Z]+

于 2013-05-28T10:50:30.767 回答
1

根据您提供的详细信息:

仅接受仅包含以下字符的 NSString:

我想让你试试这个正则表达式:

^[a-z\\d\\s]*$

它涉及^(确保从字符串的开头匹配)和$(确保匹配到字符串的结尾)

看看这个片段:

NSString *sample = @"df$hjkds hfkshf 9397 AZZ";//@"dfhjkds hfkshf 9397 AZZ";
NSError  *error = nil;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"^[a-z\\d\\s]*$"
                                                                       options:NSRegularExpressionCaseInsensitive
                                                                         error:&error];
NSArray *matches = [regex matchesInString:sample
                                  options:NSMatchingReportProgress
                                    range:NSMakeRange(0, [sample length])];

// Print matches (if any) -- Optional
for (NSTextCheckingResult *match in matches)
    NSLog(@"%@",[sample substringWithRange:match.range]);

// Acknowledge if no matches found -- Optional
if([matches count] == 0)
    NSLog(@"No matches found");

请注意,使用NSRegularExpressionCaseInsensitiveinoption不会占用匹配大写字母 (AZ) 的开销。

希望能帮助到你!

于 2013-05-28T11:24:06.330 回答