IOS之正则表达式

1、首先是介绍正则的语法

在此网上搜索的一些文章供参考:

http://msdn.microsoft.com/zh-cn/library/ae5bf541(VS.80).aspx

常用到的一些:

 

1.验证用户名和密码:("^[a-zA-Z]\w{5,15}$")正确格式:"[A-Z][a-z]_[0-9]"组成,并且第一个字必须为字母6~16位;
2.验证电话号码:("^(\d{3,4}-)\d{7,8}$")正确格式:xxx/xxxx-xxxxxxx/xxxxxxxx;
3.验证手机号码:"^1[3|4|5|8][0-9]\\d{8}$";
4.验证身份证号(15位或18位数字):"\\d{17}[[0-9],0-9xX]";
5.验证Email地址:("^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$");

 

2、关于处理微博上类似 @ 或者 # 的特殊转义字符

可以用:AutoHyperlinks

但是有人说,不支持中文,那么,咱们只要改一下正则就可以了

下载文件打开JSTwitterCoreTextView.m

把如下正则:

 

NSArray *expressions = [[[NSArray alloc] initWithObjects:

                             @"(@[a-zA-Z0-9_]+)", // screen names

                             @"(#[a-zA-Z0-9_-]+)", // hash tags

                             nil] autorelease];

改成:

 

 NSArray *expressions = [[[NSArray alloc] initWithObjects:

                             @"(@[a-zA-Z0-9_\u4E00-\u9FA5]+)"// screen names

                             @"(#([a-zA-Z0-9_\u4E00-\u9FA5]*)#)"// hash tags

                             nil] autorelease];

“@[a-zA-Z0-9_\u4E00-\u9FA5]+”  :意思是以@开头的后面可以跟a-z、A-Z、0-9、_(下划线)、\u4E00-\u9FA5(汉字)、+(+是和*类似的元字符,不同的是*匹配重复任意次(可能是0次),而+则匹配重复1次或更多次),可以用这些组成字符串

“#([a-zA-Z0-9_\u4E00-\u9FA5]*)#)”  :意思是只能是两个#号之间组成的字符串

+ (NSString *)getDomainOfEmailAddress:(NSString *)email
{
NSString *re = @"(?<=@)((?:[A-Za-z0-9]+(?:[\\-|\\.][A-Za-z0-9]+)*)+\\.[A-Za-z]{2,6})$";
NSRange range = [email rangeOfString:re options:NSRegularExpressionSearch];
if (range.location != NSNotFound) {
return [email substringWithRange:range];
}
else {
return nil;
}
}

+ (BOOL)isEmailAddress:(NSString *)email
{
NSString *re = @"<span style="font-family: Arial, Helvetica, sans-serif;">^([A-Za-z0-9\\.\\-_]{1,})@((?:[A-Za-z0-9]+(?:[\\-|\\.][A-Za-z0-9]+)*)+\\.[A-Za-z]{2,6})$</span><span style="font-family: Arial, Helvetica, sans-serif;">";</span>
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", re];

return [emailTest evaluateWithObject:email];
}

利用NSPredicate(谓词)匹配
例如匹配有效邮箱:
NSString *email = @“nijino_saki@163.com”;

    NSString *regex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";

    NSPredicate *predicate = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@", regex];

    BOOL isValid = [predicate evaluateWithObject:email];

谓词匹配比较灵活,但是需要有谓词的相关知识。

posted @ 2015-08-15 20:22  小毛驴  阅读(261)  评论(0编辑  收藏  举报