2013-05-28 56 views
0

在我的應用程序,我想只接受NSStrings,僅包括以下字符:iOS的正則表達式有良好的文字

  • AZ
  • 0-9
  • AZ
  • 空間(dec:32)

什麼是NSRegularExpression承認?

在此先感謝!

真誠, 佐利

+1

看這裏http://stackoverflow.com/a/576206/973680 –

回答

2

您可以使用此:

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

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

它將返回YES如果是別的有效NO。

希望它可以幫助你。

1

我從來沒有在iOS上,但根據文檔的正則表達式的工作,下面應該工作

[A-z0-9A-Z] +

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

如果您想要至少一個字符,請使用+而不是*

+0

如何在UITextField委託中使用它? – Hemang

+0

' - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)characters;' – Hemang

1

根據你提供的細節:

只接受NSString的,僅包括以下字符:

我想你試試這個正則表達式:

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

它涉及^(確保從字符串的開頭匹配)和$(確保匹配TILL的最後一個字符串G)

看看這個片斷:

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)的開銷。

希望它有幫助!

+1

@Zoltan Varadi,你檢查過我的解決方案嗎? – NeverHopeless

+0

不錯的答案它工作正常。有沒有什麼辦法只檢查字符串中的2位數和2個字母 –

+0

@CharanGiri,很高興看到它對你有用。你可以看看這個正則表達式:'^((?=。* [az])(?=。* \ d)[az \ d] {4}。*)$'在這裏查看demo:http:// rubular的.com/R/Ua2qe8j4eC。這將匹配至少有兩個字母和數字字符的字符串,也可能是其他內容。 – NeverHopeless

相關問題