具有良好字符的iOS正则表达式

时间:2013-05-28 10:44:06

标签: ios regex nsregularexpression

在我的应用中,我只接受只包含以下字符的NSStrings

  
      
  • A-Z
  •   
  • 0-9
  •   
  • A-Z
  •   
  • space(dec:32)
  •   

NSRegularExpression认识到什么?

提前致谢!

此致 佐利

4 个答案:

答案 0 :(得分:3)

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

如果您想要至少一个字符,请使用+代替*

答案 1 :(得分:3)

您可以使用:

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

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

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

希望它对你有所帮助。

答案 2 :(得分:1)

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

  

[a-z0-9A-Z] +

答案 3 :(得分:1)

根据您提供的详细信息:

  

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

我希望你试试这个正则表达式:

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

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

查看此代码段:

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");

请注意,NSRegularExpressionCaseInsensitiveoption的使用不会占用匹配大写字母(A-Z)的费用。

希望它有所帮助!