在我的应用程序中,我只想接受NSStrings
仅包含以下字符的内容:
- 阿兹
- 0-9
- AZ
- 空间(十二月:32)
有什么资格NSRegularExpression
承认这一点?
提前致谢!
真诚的,佐利
在我的应用程序中,我只想接受NSStrings
仅包含以下字符的内容:
- 阿兹
- 0-9
- AZ
- 空间(十二月:32)
有什么资格NSRegularExpression
承认这一点?
提前致谢!
真诚的,佐利
NSRegularExpression *regex =
[NSRegularExpression regularExpressionWithPattern:@"[a-zA-Z0-9 ]*"
options:...
error:...];
如果您想要至少一个字符,请使用+
而不是*
.
你可以使用这个:
-(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]+
根据您提供的详细信息:
仅接受仅包含以下字符的 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");
请注意,使用NSRegularExpressionCaseInsensitive
inoption
不会占用匹配大写字母 (AZ) 的开销。
希望能帮助到你!