#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
// NSPredicate *pre = [NSPredicate predicateWithFormat:@"self matches %@",@"0\\d\\d-\\d\\d\\d\\d\\d\\d\\d\\d"];
// NSPredicate *pre = [NSPredicate predicateWithFormat:@"self matches %@",@"\\bhi\\b.*\\bLucy\\b"];
// NSPredicate *pre = [NSPredicate predicateWithFormat:@"self matches %@",@"\\d+"];
// NSPredicate *pre = [NSPredicate predicateWithFormat:@"self matches %@",@"\\b\\w{6}\\b"];
//5位到12位的数字
// NSPredicate *pre = [NSPredicate predicateWithFormat:@"self matches %@",@"^\\w{5,12}$"];
//匹配[]中任意一个字符
// NSPredicate *pre = [NSPredicate predicateWithFormat:@"self matches %@",@"^[dfGhjk]$"];
//全角半角字符均匹配
// NSPredicate *pre = [NSPredicate predicateWithFormat:@"self matches %@",@"^[。?!]$"];
// NSPredicate *pre = [NSPredicate predicateWithFormat:@"self matches %@",@"^[0-8]$"];
// NSPredicate *pre = [NSPredicate predicateWithFormat:@"self matches %@",@"^[a-z0-9A-Z_]$"];
//999.999.999.999
// NSPredicate *pre = [NSPredicate predicateWithFormat:@"self matches %@",@"(\\d{1,3}\\.){3}\\d{1,3}"];
//添加公式 判断 1-1000 定规则
NSPredicate *pre = [NSPredicate predicateWithFormat:@"self matches %@",@"((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)"];
//((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.)
//
NSString *test = @"2491.255.1.193";
//
BOOL b = [pre evaluateWithObject:test];
if (b) {
NSLog(@"与公式匹配");
}else{
NSLog(@"不匹配");
}
}
/**
除此之外,下面是cheat sheet的缩小版,和一些简短的解释:
.匹配任一字符。p.p匹配pop,pup,pmp,p@p等等。
\w匹配任意“word-like”字符,包括数字,字母,下划线,不过不能匹配标点符号和其他字符。hello\w会匹配”hello_“,”hello9”和”helloo”,但不匹配”hello!”。
\d 匹配数字,大部分情况下是[0-9]。\d\d?:\d\d会匹配时间格式的字符串,比如”9:30“和”12:45“。
\b 匹配额外的字符,例如空格,标点符号。to\b 会匹配”to the moon”和“to!”中得“to”,但是不会匹配“tomorrow”。\b 用在整个单词的匹配方面和方便。
\s 会匹配空白字符,比如,空格,制表符,换行符。hello\s 会匹配“Well,hello there!”中的 “hello ”。
^用在一行的开始。记住,这个特殊的^不同于方括号中的^!例如,^Hello 会匹配字符串“Hello there”,而不会去匹配“He said Hello”。
$ 用在一行的结束,例如,the end$ 会匹配“It was the end” 而不会去匹配 “the end was near”。
* 匹配 它之前的元素0次或多次。12*3 会匹配 13, 123, 1223, 122223, 和 1222222223。
+ 匹配 它之前的元素1次或多次. 12+3 会匹配 123, 1223, 122223, 和 1222222223。
花括号{}包含了匹配的最大和值最小个数。例如,10{1,2}1会匹配“101”和“1001”,而不会匹配“10001”,因为匹配的最小个数为1,最大个数为2。He[LI]{2,}o会匹配“HeLLo”和“HellLLLIo”和任意其他的“hello”添加多个L的变种,所以没有限制,因为,最少的个数是2,最大的个数没有设置。
有了这些基础知识,就可以继续向下学习了。
*/
@end
网友评论