iOS之正则表达式

Posted Caersi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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之正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

iOS之正则表达式

iOS之正则表达式(转载)

通过 Java 正则表达式提取 semver 版本字符串的片段

Python学习笔记之正则表达式

iOS之正则表达式的使用

iOS之NSPredicate(正则表达式和UIBarController):谓词