700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > IOS用正则表达式验证textfield输入的内容是否合法

IOS用正则表达式验证textfield输入的内容是否合法

时间:2018-07-16 12:48:09

相关推荐

IOS用正则表达式验证textfield输入的内容是否合法

iphone 4.0以后就开始支持正则表达式的使用了,在ios4.0中正则表达式的使用是使用NSRegularExpression类来调用。

1. 下面一个简单的使用正则表达式的一个例子:NSRegularExpression类

-(void)parseString{

//组装一个字符串,需要把里面的网址解析出来

NSString*urlString=@"sfdsf";

//NSRegularExpression类里面调用表达的方法需要传递一个NSError的参数。下面定义一个

NSError*error;

//http+:[^\\s]*这个表达式是检测一个网址的。

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"http+:[^\\s]*"options:0error:&error];

if(regex !=nil) {

NSTextCheckingResult*firstMatch=[regex firstMatchInString:urlString options:0range:NSMakeRange(0, [urlStringlength])];

if(firstMatch) {

NSRangeresultRange = [firstMatch rangeAtIndex:0];//等同于 firstMatch.range --- 相匹配的范围

//从urlString当中截取数据

NSString*result=[urlStringsubstringWithRange:resultRange];

//输出结果

NSLog(@"%@",result);

}

}

}

2.使用正则表达式来判断

//初始化一个NSRegularExpression 对象,并设置检测对象范围为:0-9

NSRegularExpression *regex2 = [NSRegularExpression regularExpressionWithPattern:@"^[0-9]*$" options:0 error:nil];

if (regex2)

{//对象进行匹配

NSTextCheckingResult *result2 = [regex2 firstMatchInString:textField.text options:0 range:NSMakeRange(0, [textField.text length])];

if (result2) {

}

}

1。判断邮箱格式是否正确的代码:NSPredicatel类

//利用正则表达式验证

NSPredicatel类:主要用来指定过滤器的条件,该对象可以准确的描述所需条件,对每个对象通过谓词进行筛选,判断是否与条件相匹配。谓词是指在计算机中表示计算真假值的函数。原理和用法都类似于SQL查询中的where,作用相当于数据库的过滤取。主要用于从集合中分拣出符合条件的对象,也可以用于字符串的正则匹配

-(BOOL)isValidateEmail:(NSString *)email

{

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

NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES%@",emailRegex];

return[emailTest evaluateWithObject:email];

}

2 。 匹配9-15个由字母/数字组成的字符串的正则表达式:

NSString * regex = @"^[A-Za-z0-9]{9,15}$";

NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];

BOOL isMatch = [pred evaluateWithObject:txtfldPhoneNumber.text];

Cocoa用NSPredicate描述查询的方式,原理类似于在数据库中进行查询

用BETWEEN,IN,BEGINWITH,ENDWITH,CONTAINS,LIKE这些谓词来构造NSPredicate,必要的时候使用SELF直接对自己进行匹配

[cpp]

//基本的查询

NSPredicate *predicate;

predicate = [NSPredicate predicateWithFormat: @"name == 'Herbie'"];

BOOL match = [predicate evaluateWithObject: car];

NSLog (@"%s", (match) ? "YES" : "NO");

//在整个cars里面循环比较

predicate = [NSPredicate predicateWithFormat: @"engine.horsepower > 150"];

NSArray *cars = [garage cars];

for (Car *car in [garage cars]) {

if ([predicate evaluateWithObject: car]) {

NSLog (@"%@", car.name);

}

}

//输出完整的信息

predicate = [NSPredicate predicateWithFormat: @"engine.horsepower > 150"];

NSArray *results;

results = [cars filteredArrayUsingPredicate: predicate];

NSLog (@"%@", results);

//含有变量的谓词

NSPredicate *predicateTemplate = [NSPredicate predicateWithFormat:@"name == $NAME"];

NSDictionary *varDict;

varDict = [NSDictionary dictionaryWithObjectsAndKeys:

@"Herbie", @"NAME", nil];

predicate = [predicateTemplate predicateWithSubstitutionVariables: varDict];

NSLog(@"SNORGLE: %@", predicate);

match = [predicate evaluateWithObject: car];

NSLog (@"%s", (match) ? "YES" : "NO");

//注意不能使用$VARIABLE作为路径名,因为它值代表值

//谓词字符窜还支持c语言中一些常用的运算符

predicate = [NSPredicate predicateWithFormat:

@"(engine.horsepower > 50) AND (engine.horsepower < 200)"];

results = [cars filteredArrayUsingPredicate: predicate];

NSLog (@"oop %@", results);

predicate = [NSPredicate predicateWithFormat: @"name < 'Newton'"];

results = [cars filteredArrayUsingPredicate: predicate];

NSLog (@"%@", [results valueForKey: @"name"]);

//强大的数组运算符

predicate = [NSPredicate predicateWithFormat:

@"engine.horsepower BETWEEN { 50, 200 }"];

results = [cars filteredArrayUsingPredicate: predicate];

NSLog (@"%@", results);

NSArray *betweens = [NSArray arrayWithObjects:

[NSNumber numberWithInt: 50], [NSNumber numberWithInt: 200], nil];

predicate = [NSPredicate predicateWithFormat: @"engine.horsepower BETWEEN %@", betweens];

results = [cars filteredArrayUsingPredicate: predicate];

NSLog (@"%@", results);

predicateTemplate = [NSPredicate predicateWithFormat: @"engine.horsepower BETWEEN $POWERS"];

varDict = [NSDictionary dictionaryWithObjectsAndKeys: betweens, @"POWERS", nil];

predicate = [predicateTemplate predicateWithSubstitutionVariables: varDict];

results = [cars filteredArrayUsingPredicate: predicate];

NSLog (@"%@", results);

//IN运算符

predicate = [NSPredicate predicateWithFormat: @"name IN { 'Herbie', 'Snugs', 'Badger', 'Flap' }"];

results = [cars filteredArrayUsingPredicate: predicate];

NSLog (@"%@", [results valueForKey: @"name"]);

predicate = [NSPredicate predicateWithFormat: @"SELF.name IN { 'Herbie', 'Snugs', 'Badger', 'Flap' }"];

results = [cars filteredArrayUsingPredicate: predicate];

NSLog (@"%@", [results valueForKey: @"name"]);

names = [cars valueForKey: @"name"];

predicate = [NSPredicate predicateWithFormat: @"SELF IN { 'Herbie', 'Snugs', 'Badger', 'Flap' }"];

results = [names filteredArrayUsingPredicate: predicate];//这里限制了SELF的范围

NSLog (@"%@", results);

//BEGINSWITH,ENDSWITH,CONTAINS

//附加符号,[c],[d],[cd],c表示不区分大小写,d表示不区分发音字符,cd表示什么都不区分

predicate = [NSPredicate predicateWithFormat: @"name BEGINSWITH 'Bad'"];

results = [cars filteredArrayUsingPredicate: predicate];

NSLog (@"%@", results);

predicate = [NSPredicate predicateWithFormat: @"name BEGINSWITH 'HERB'"];

results = [cars filteredArrayUsingPredicate: predicate];

NSLog (@"%@", results);

predicate = [NSPredicate predicateWithFormat: @"name BEGINSWITH[cd] 'HERB'"];

results = [cars filteredArrayUsingPredicate: predicate];

NSLog (@"%@", results);

//LIKE运算符(通配符)

predicate = [NSPredicate predicateWithFormat: @"name LIKE[cd] '*er*'"];

results = [cars filteredArrayUsingPredicate: predicate];

NSLog (@"%@", results);

predicate = [NSPredicate predicateWithFormat: @"name LIKE[cd] '???er*'"];

results = [cars filteredArrayUsingPredicate: predicate];

NSLog (@"%@", results);

//基本的查询

NSPredicate *predicate;

predicate = [NSPredicate predicateWithFormat: @"name == 'Herbie'"];

BOOL match = [predicate evaluateWithObject: car];

NSLog (@"%s", (match) ? "YES" : "NO");

//在整个cars里面循环比较

predicate = [NSPredicate predicateWithFormat: @"engine.horsepower > 150"];

NSArray *cars = [garage cars];

for (Car *car in [garage cars]) {

if ([predicate evaluateWithObject: car]) {

NSLog (@"%@", car.name);

}

}

//输出完整的信息

predicate = [NSPredicate predicateWithFormat: @"engine.horsepower > 150"];

NSArray *results;

results = [cars filteredArrayUsingPredicate: predicate];

NSLog (@"%@", results);

//含有变量的谓词

NSPredicate *predicateTemplate = [NSPredicate predicateWithFormat:@"name == $NAME"];

NSDictionary *varDict;

varDict = [NSDictionary dictionaryWithObjectsAndKeys:

@"Herbie", @"NAME", nil];

predicate = [predicateTemplate predicateWithSubstitutionVariables: varDict];

NSLog(@"SNORGLE: %@", predicate);

match = [predicate evaluateWithObject: car];

NSLog (@"%s", (match) ? "YES" : "NO");

//注意不能使用$VARIABLE作为路径名,因为它值代表值

//谓词字符窜还支持c语言中一些常用的运算符

predicate = [NSPredicate predicateWithFormat:

@"(engine.horsepower > 50) AND (engine.horsepower < 200)"];

results = [cars filteredArrayUsingPredicate: predicate];

NSLog (@"oop %@", results);

predicate = [NSPredicate predicateWithFormat: @"name < 'Newton'"];

results = [cars filteredArrayUsingPredicate: predicate];

NSLog (@"%@", [results valueForKey: @"name"]);

//强大的数组运算符

predicate = [NSPredicate predicateWithFormat:

@"engine.horsepower BETWEEN { 50, 200 }"];

results = [cars filteredArrayUsingPredicate: predicate];

NSLog (@"%@", results);

NSArray *betweens = [NSArray arrayWithObjects:

[NSNumber numberWithInt: 50], [NSNumber numberWithInt: 200], nil];

predicate = [NSPredicate predicateWithFormat: @"engine.horsepower BETWEEN %@", betweens];

results = [cars filteredArrayUsingPredicate: predicate];

NSLog (@"%@", results);

predicateTemplate = [NSPredicate predicateWithFormat: @"engine.horsepower BETWEEN $POWERS"];

varDict = [NSDictionary dictionaryWithObjectsAndKeys: betweens, @"POWERS", nil];

predicate = [predicateTemplate predicateWithSubstitutionVariables: varDict];

results = [cars filteredArrayUsingPredicate: predicate];

NSLog (@"%@", results);

//IN运算符

predicate = [NSPredicate predicateWithFormat: @"name IN { 'Herbie', 'Snugs', 'Badger', 'Flap' }"];

results = [cars filteredArrayUsingPredicate: predicate];

NSLog (@"%@", [results valueForKey: @"name"]);

predicate = [NSPredicate predicateWithFormat: @"SELF.name IN { 'Herbie', 'Snugs', 'Badger', 'Flap' }"];

results = [cars filteredArrayUsingPredicate: predicate];

NSLog (@"%@", [results valueForKey: @"name"]);

names = [cars valueForKey: @"name"];

predicate = [NSPredicate predicateWithFormat: @"SELF IN { 'Herbie', 'Snugs', 'Badger', 'Flap' }"];

results = [names filteredArrayUsingPredicate: predicate];//这里限制了SELF的范围

NSLog (@"%@", results);

//BEGINSWITH,ENDSWITH,CONTAINS

//附加符号,[c],[d],[cd],c表示不区分大小写,d表示不区分发音字符,cd表示什么都不区分

predicate = [NSPredicate predicateWithFormat: @"name BEGINSWITH 'Bad'"];

results = [cars filteredArrayUsingPredicate: predicate];

NSLog (@"%@", results);

predicate = [NSPredicate predicateWithFormat: @"name BEGINSWITH 'HERB'"];

results = [cars filteredArrayUsingPredicate: predicate];

NSLog (@"%@", results);

predicate = [NSPredicate predicateWithFormat: @"name BEGINSWITH[cd] 'HERB'"];

results = [cars filteredArrayUsingPredicate: predicate];

NSLog (@"%@", results);

//LIKE运算符(通配符)

predicate = [NSPredicate predicateWithFormat: @"name LIKE[cd] '*er*'"];

results = [cars filteredArrayUsingPredicate: predicate];

NSLog (@"%@", results);

predicate = [NSPredicate predicateWithFormat: @"name LIKE[cd] '???er*'"];

results = [cars filteredArrayUsingPredicate: predicate];

NSLog (@"%@", results);

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。