首页 > 代码库 > iOS之正则表达式(一)
iOS之正则表达式(一)
这几天研究正则表达式发现正则表达式真是个好东西,可以在支付的时候轻松匹配交易数额,入门内容以及匹配如下:
@interface ViewController () @property (weak, nonatomic) IBOutlet UITextField *textTf; @property (weak, nonatomic) IBOutlet UILabel *label; @property (weak, nonatomic) IBOutlet UIButton *testBtn; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. //1.正则表达式的作用 方便快捷的匹配到特定的字符串,简化代码量 //例子解析 /* ^.{6,18}$ 表达的意思是匹配任意长度在6到18位长度的字符串 其中^和$代表的是特殊符号,前者表示匹配字符串的开头,后者表示匹配字符串的结尾; 其中{n}表示匹配字符重复n次,{n,}匹配字符重复n次或者更多次,{n,m}匹配重复n到m之间的次数; 而.符号表示任一字符(除换行符之外); */ /*为了进行精确的匹配,比如说匹配到具体的数字或者字母可以用特殊的符号来表示,其中\d表示任意的单个数字,\w表示任意单个字母或者数字或者直接使用0-9的任意数字表示具体数字。而特殊符号?表示前一个字符为0或者1个。 所以形如^0\\d{2}\-?\\d{8}$ 表示的意思是匹配首字符为0后续接两个数字,再后续有一个“-”符号或者没有,再后续匹配8个数字; 有一点要注意,上面展示的表达式解析时\d这些特殊符号在我们的代码中多了一个\,这是因为\本身是转义符号,为了保证表达式能正常匹配,我们要给\d进行一次转义,所以就变成了\\。基本上所有的符号字符都需要转义 */ /*正则表达式的拆分可以分为两部分,一部分是值表达式,另外一部分是修饰表达式。所谓值表达就是说这个符号表示了某个值,就像"\d"表示数字,"."表示任意非换行符字符。修饰表达用来修饰值达成某种条件,比如{2}表示前面一个值重复两次,"*"表示前一个值重复0次或者更多次。根据这种方法,那么^.*[A-Z]+.*[a-z]+.*$可以拆分成:^$、.*、[A-Z]+、[a-z]+。 注:*表示前一个值符号重复0到任意次数;+表示前一个值符号重复1到任意次数 [A-Z]表示任意一个大写字母 */ //2.语法/字符说明表 //值表达 /* . 匹配除换行符外的任意字符 \w 匹配字母或者数字的字符 \W 匹配任意不是字母或者数字的字符 \s 匹配任意的空白符(空符、制表符、换行符) \S 匹配任意不是空白符的字符 \d 匹配任意数字 \D 匹配任意非数字的字符 \b 匹配单词的结尾或者开头的字符 \B 匹配任意不是单词结尾或开头的字符 [^x] 匹配任意非x的字符。如[^[a-z]]匹配非小写字母的任意字符 ^ 匹配字符串的开头 $ 匹配字符串的结尾 */ //修饰表达 /* * 匹配重复任意次数 + 匹配重复一次以上的次数 ? 匹配一次或零次 {n} 匹配重复n次 {n,} 匹配重复n次或n次以上 {n,m} 匹配重复最少n次最多m次 */ [self.testBtn addTarget:self action:@selector(testBtnClick:) forControlEvents:UIControlEventTouchUpInside]; } - (void)testBtnClick:(UIButton*)btn{ NSLog(@"开始测试"); // NSString *regExp = @"^\\d{5,8}"; //匹配5到8位数字 NSString *regExp = @"^\\d{1,}\\.\\d[1-9]"; //匹配小于等于0.01的数字 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regExp]; if ([predicate evaluateWithObject:self.textTf.text]) { self.label.text = @"匹配成功"; }else{ self.label.text = @"匹配失败"; } }
iOS之正则表达式(一)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。