1
В приведенном ниже методе я хочу проверить текст UITextField
, если: содержит одно или несколько английских слов и одно или несколько номеров, а также необязательно содержит специальные символы (! @ $ & #) return true, else return false.Регулярные выражения в ios (слово буква и специальные символы)
#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] * $ "' –