在我的應用程序,我想只接受NSStrings
,僅包括以下字符:iOS的正則表達式有良好的文字
- AZ
- 0-9
- AZ
- 空間(dec:32)
什麼是NSRegularExpression
承認?
在此先感謝!
真誠, 佐利
在我的應用程序,我想只接受NSStrings
,僅包括以下字符:iOS的正則表達式有良好的文字
- AZ
- 0-9
- AZ
- 空間(dec:32)
什麼是NSRegularExpression
承認?
在此先感謝!
真誠, 佐利
您可以使用此:
-(BOOL) NSStringIsValid:(NSString *)checkString
{
NSString *stricterFilterString = @"[A-Z0-9a-z ]*";
NSPredicate *stringTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", stricterFilterString];
return [stringTest evaluateWithObject:checkString];
}
它將返回YES如果是別的有效NO。
希望它可以幫助你。
我從來沒有在iOS上,但根據文檔的正則表達式的工作,下面應該工作
[A-z0-9A-Z] +
NSRegularExpression *regex =
[NSRegularExpression regularExpressionWithPattern:@"[a-zA-Z0-9 ]*"
options:...
error:...];
如果您想要至少一個字符,請使用+
而不是*
。
根據你提供的細節:
只接受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");
請注意,的NSRegularExpressionCaseInsensitive
在option
使用不會採取匹配大寫字母(A-Z)的開銷。
希望它有幫助!
@Zoltan Varadi,你檢查過我的解決方案嗎? – NeverHopeless
不錯的答案它工作正常。有沒有什麼辦法只檢查字符串中的2位數和2個字母 –
@CharanGiri,很高興看到它對你有用。你可以看看這個正則表達式:'^((?=。* [az])(?=。* \ d)[az \ d] {4}。*)$'在這裏查看demo:http:// rubular的.com/R/Ua2qe8j4eC。這將匹配至少有兩個字母和數字字符的字符串,也可能是其他內容。 – NeverHopeless
看這裏http://stackoverflow.com/a/576206/973680 –