【发布时间】:2016-06-01 20:43:05
【问题描述】:
在下面的方法中,如果: 它包含一个或多个英文单词,以及一个或多个数字,并且 let 可选地包含特殊字符(!@$) 返回真,否则返回假。
#define pattern @"^[a-zA-Z0-9\\u0021\\u0040\\u0023\\u0024\\u0026]{1}*$"
- (BOOL)stringHasCorrectFormat:(NSString *)str {
if ([str componentsSeparatedByString:SPACE].count > 1)
return NO;
NSString *regularPattern = EMPTY_STRING;
regularPattern = [regularPattern stringByAppendingString:pattern]
NSRegularExpression *regex = [NSRegularExpression
regularExpressionWithPattern:regularPattern
options:NSRegularExpressionCaseInsensitive
error:nil];
NSTextCheckingResult *match = [regex
firstMatchInString:str
options:0
range:NSMakeRange(0, [str length])];
if (match != nil) {
return YES;
}
return NO;
}
谢谢
【问题讨论】:
-
您的问题是什么?你只需要显示单词或数字吗?
-
您实际上不允许使用 0 个或多个符号。使用
@"^[a-zA-Z0-9\\u0021\\u0040\\u0023\\u0024\\u0026]*$"。如果要确保有一个字母和一个数字,请使用@"^(?=[^a-zA-Z]*[a-zA-Z])(?=\\D*\\d)[a-zA-Z0-9\\u0021\\u0040\\u0023\\u0024\\u0026]*$"
标签: ios objective-c regex nsregularexpression