NSPredicate 与正则表达式检查字母数字
Posted
技术标签:
【中文标题】NSPredicate 与正则表达式检查字母数字【英文标题】:NSPredicate with regex to check alphanumeric 【发布时间】:2013-07-10 09:36:49 【问题描述】:我想在 Objective c 中使用正则表达式检查字符串。我的代码
NSString *regexAmazonOrder =@"[a-zA-Z0-9]*";
NSPredicate *predicateAmazonOrder = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regexAmazonOrder];
if([predicateAmazonOrder evaluateWithObject:cardNumber.text])
NSLog(@"Its coming inside AMAZON ORDER EVALUATIONS");
...
但它不起作用。帮帮我。我知道它很简单,但吃我的心!!!谢谢
【问题讨论】:
什么似乎不起作用?如果您想使用正则表达式,请使用NSRegularExpression
类。你试过了吗?
您的代码似乎可以工作...您能否提供一个对您来说失败的示例字符串?
@Alladinian - femitestcard2013
@Meenu 好吧...刚刚测试过,它可以工作。您可以在评估之前添加断点或NSLog
语句,以检查cardNumber.text
确实是您所期望的。还要检查任何空格,因为它会破坏匹配。
【参考方案1】:
这里是较短的版本:
+(BOOL)isAlphanumericString:(NSString *)string
NSString *filter = @"[a-z0-9]*";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", filter];
return [predicate evaluateWithObject:string];
【讨论】:
【参考方案2】:试试这样:(未经测试,只是给你一个开端)
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[a-z0-9]*"
options:NSRegularExpressionCaseInsensitive
error:&error];
NSArray *matches = [regex matchesInString:cardNumber.text
options:0
range:NSMakeRange(0, [string length])];
if([matches count] > 0)
// Valid input
【讨论】:
很高兴看到您重新开始营业。:)以上是关于NSPredicate 与正则表达式检查字母数字的主要内容,如果未能解决你的问题,请参考以下文章