谓词predicate(验证email,手机号)

原创 2015年07月09日 21:24:03
//
//  AppDelegate.m
//  PredicateDemo
//
//  Created by 1 on 14-10-7.
//  Copyright (c) 2014年 Lee. All rights reserved.
//

#import "AppDelegate.h"

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    //谓词
    //    字符串相关:BEGINSWITH、ENDSWITH、CONTAINS
    //    例:@"name CONTAIN[cd] 'ang'"   //包含某个字符串
    //    @"name BEGINSWITH[c] 'sh'"     //以某个字符串开头
    //    @"name ENDSWITH[d] 'ang'"      //以某个字符串结束
    //    注:[c]不区分大小写 , [d]不区分发音符号即没有重音符号 , [cd]既不区分大小写,也不区分发音符号。
    //    实际应用:对NSArray进行过滤

    NSArray *array = [[NSArray alloc]initWithObjects:@"beijing",@"shanghai",@"guangzou",@"Guangzou",@"wuhan",@"wuchang",@"武老师", nil];

//    NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF BEGINSWITH %@",string];
    NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF BEGINSWITH[cd] 'wu' "];


    NSArray *pred1Arr =[array filteredArrayUsingPredicate:pred];
    NSLog(@"1:%@",pred1Arr);

    //    字符串本身:SELF
    //    例:@"SELF == 'APPLE'"
    NSString *string1 = @"guangzou";
    NSPredicate *predStr = [NSPredicate predicateWithFormat:@"SELF == %@",string1];
    NSArray *pred2Arr = [array filteredArrayUsingPredicate:predStr];

    //    通配符:LIKE
    //    例:@"name LIKE[cd] '*er*'"    //*代表通配符,Like也接受[cd].
    //    @"name LIKE[cd] '???er*'"


    NSLog(@"2:%@",pred2Arr);
    NSPredicate *predStr1 = [NSPredicate predicateWithFormat:@"SELF like[c] %@",@"*ang*"];
    NSLog(@"3:%@",[array filteredArrayUsingPredicate:predStr1]);


    NSArray *arrayFilter = [NSArray arrayWithObjects:@"pict", @"blackrain", @"ipad", nil];

    NSArray *arrayContents = [NSArray arrayWithObjects:@"I am a picture.", @"I am a guy", @"I am gagaga", @"ipad", nil];
    //判断 arrayContents 中有没有 arrayFiltrt 中元素
    NSPredicate *thePredicate = [NSPredicate predicateWithFormat:@"NOT (SELF in  %@)", arrayFilter];
    NSLog(@"4:%@",[arrayContents filteredArrayUsingPredicate:thePredicate]);


    NSArray *arrayFilter1 = [NSArray arrayWithObjects:@"abc1", @"abc2" , nil];

    NSArray *arrayContent1 = [NSArray arrayWithObjects:@"a1", @"abc1", @"abc4",@"xyz", nil];

    NSPredicate *thePredicate1 = [NSPredicate predicateWithFormat:@"NOT (SELF in %@)", arrayFilter1];

    NSLog(@"5:%@",[arrayContent1 filteredArrayUsingPredicate:thePredicate1]);


    //    比较运算符 > 、< 、== 、 >= 、<= 、 !=
    //    例:@"number >= 99"
    //字面量
//    NSString *str = @"122";
//    NSArray *arr = @[@"123",str];
    NSNumber *number = @12;
    NSPredicate *predicateNumber = [NSPredicate predicateWithFormat:@"SELF <= 13"];
    BOOL isBigger = [predicateNumber evaluateWithObject:number];
    //三位运算法
    NSLog(@"%@",isBigger?@"YES":@"NO");

    //    正则表达式:MATCHES
    //    例:NSString *regex = @"^A.+e$";   //以A开头,e结尾
    //    @"name MATCHES %@",regex

    //    实际应用:判断字符串首字母是否为字母




    //判断邮箱
    BOOL ret = [AppDelegate isValidateEmail:@"gkrlsdklrdvk@qq.com"];
    NSLog(@"%@",ret?@"This is a Email":@"This is  not a Email");
    //判断数字
    BOOL ret1 = [AppDelegate isValidateTelNumber:@"12345678901"];
    if (ret1) {
        NSLog(@"This is a Tel");
    }else{
        NSLog(@"This is not a Tel");
    }
    //判断手机号
    BOOL ret3 = [self isMobileNumber:@"18012341234"];
    if (ret3) {
        NSLog(@"This is a Tel");
    }else{
        NSLog(@"This is not a Tel");
    }





    return YES;
}

//是否是有效的正则表达式

+(BOOL)isValidateRegularExpression:(NSString *)strDestination byExpression:(NSString *)strExpression

{

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", strExpression];

    return [predicate evaluateWithObject:strDestination];

}

//验证email
+(BOOL)isValidateEmail:(NSString *)email {
    //jfkjkfj  @  ddvv  . com



    NSString *strRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{1,5}";
    BOOL rt = [self isValidateRegularExpression:email byExpression:strRegex];

    return rt;

}

//验证电话号码
+(BOOL)isValidateTelNumber:(NSString *)number {

    NSString *strRegex = @"[0-9]{11,11}";

    BOOL rt = [self isValidateRegularExpression:number byExpression:strRegex];

    return rt;

}

// 正则判断手机号码地址格式
- (BOOL)isMobileNumber:(NSString *)mobileNum
{
    /**
     * 手机号码
     * 移动:134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188
     * 联通:130,131,132,152,155,156,185,186
     * 电信:133,1349,153,180,189
     */
    NSString * MOBILE = @"^1(3[0-9]|5[0-35-9]|8[025-9])\\d{8}$";
    /**
     10         * 中国移动:China Mobile
     11         * 134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188
     12         */
    NSString * CM = @"^1(34[0-8]|(3[5-9]|5[017-9]|8[278])\\d)\\d{7}$";
    /**
     15         * 中国联通:China Unicom
     16         * 130,131,132,152,155,156,185,186
     17         */
    NSString * CU = @"^1(3[0-2]|5[256]|8[56])\\d{8}$";
    /**
     20         * 中国电信:China Telecom
     21         * 133,1349,153,180,189
     22         */
    NSString * CT = @"^1((33|53|8[09])[0-9]|349)\\d{7}$";
    /**
     25         * 大陆地区固话及小灵通
     26         * 区号:010,020,021,022,023,024,025,027,028,029
     27         * 号码:七位或八位
     28         */
    // NSString * PHS = @"^0(10|2[0-5789]|\\d{3})\\d{7,8}$";

    NSPredicate *regextestmobile = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", MOBILE];
    NSPredicate *regextestcm = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CM];
    NSPredicate *regextestcu = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CU];
    NSPredicate *regextestct = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CT];

    if (([regextestmobile evaluateWithObject:mobileNum])
        || ([regextestcm evaluateWithObject:mobileNum])
        || ([regextestct evaluateWithObject:mobileNum])
        || ([regextestcu evaluateWithObject:mobileNum]))
    {
        if([regextestcm evaluateWithObject:mobileNum]) {
            NSLog(@"China Mobile");
        } else if([regextestct evaluateWithObject:mobileNum]) {
            NSLog(@"China Telecom");
        } else if ([regextestcu evaluateWithObject:mobileNum]) {
            NSLog(@"China Unicom");
        } else {
            NSLog(@"Unknow");
        }

        return YES;
    }
    else
    {
        return NO;
    }
}
#pragma mark - HelloWorld
@end

表单验证(email,手机号,座机等)

Document

最全正则表达式总结:验证QQ号、手机号、Email、中文、邮编、身份证、IP地址等

[置顶] 最全正则表达式总结:验证QQ号、手机号、Email、中文、邮编、身份证、IP地址等 标签: 正则表达式js正则表达式正则表达式-语法正则验证RegExp 2017-0...

最全正则表达式总结:验证QQ号、手机号、Email、中文、邮编、身份证、IP地址等

什么是 RegExp? RegExp 是正则表达式(Regular expression)的缩写,作用是对字符串执行模式匹配。 通常用于格式验证、正则替换、查找子串等 各种编程语言的正则表达式基本相同...

正则表达式总结:验证QQ号、手机号、Email、中文、邮编、身份证、IP地址等

转载自:http://www.lovebxm.com/2017/05/31/RegExp/ 什么是 RegExp? RegExp 是正则表达式(Regular expression)的缩写,作用是对字...
  • et54h
  • et54h
  • 2017年07月14日 10:49
  • 144

js正则表达式 验证手机号,email地址和邮政编码等等等等。。。

//手机号码的验证(13开头18开头和158,159开头,共11位) var re; var ss=document.getElementById('textbox3').val; re=...
  • pjwan
  • pjwan
  • 2014年04月03日 11:11
  • 1597

最全正则表达式总结:验证QQ号、手机号、Email、中文、邮编、身份证、IP地址等

什么是 RegExp? RegExp 是正则表达式(Regular expression)的缩写,作用是对字符串执行模式匹配。 通常用于格式验证、正则替换、查找子串等 各种编程语...
  • he90227
  • he90227
  • 2017年07月14日 13:54
  • 211

最全正则表达式总结:验证QQ号、手机号、Email、中文、邮编、身份证、IP地址等

什么是 RegExp? RegExp 是正则表达式(Regular expression)的缩写,作用是对字符串执行模式匹配。通常用于格式验证、正则替换、查找子串等各种编程语言的正则表达式基本相...

IOS常用数据校验方法,验证手机号,信用卡号,电话号码,邮编,Email等

#import typedef enum { IdentifierTypeKnown = 0, IdentifierTypeZipCode, //1 Ident...

JAVA随机生成中文姓名,性别,Email,手机号,住址

这是一个测试类,直接复制粘贴改变包名就可以运行main方法 package com.liuzy.javaopen.test; import java.util.HashMap; ...

Java判断时间,Email,手机号,身份证等是否为正确格式

/=====================判断时间是否正确格式 public static boolean checkDate(String date,String format) ...{   ...
  • macrobn
  • macrobn
  • 2013年09月11日 16:10
  • 1095
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:谓词predicate(验证email,手机号)
举报原因:
原因补充:

(最多只允许输入30个字)