在我的应用中,我只接受只包含以下字符的NSStrings
:
- A-Z
- 0-9
- A-Z
- space(dec:32)
NSRegularExpression
认识到什么?
提前致谢!
此致 佐利
答案 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");
请注意,NSRegularExpressionCaseInsensitive
中option
的使用不会占用匹配大写字母(A-Z)的费用。
希望它有所帮助!