iOS 正则表达式
Regular Expression
这是英文的表达,其本身是描述或匹配符合某个句法规则的字符串。至于为啥翻译成正则,表示鬼知道呢。正确规则?
一个正则表达式通常被称为一个pattern(模式)。
一个正则表达式通常有如下的结构:
选择
操作符: |
示例:
gray|grey 表示匹配gray或grey
数量限定
操作符: + ? *
示例:
+表示其前面的字符至少为一个。
goo+gle可以匹配 google, google,gooooooole等。
?表示其前面的字符至多为1个。
colou?r可以匹配 color和colour。
表示其前面的字符可以是n个,n非负数。
0*42可以匹配 42,042,0042,00042等
范围
操作符()
示例:
(grand)?father可以匹配grandfather或father。
ps:你不会现在就把?操作符的含义给忘记了吧。
基本的规则已经介绍了,剩下的语法规则请google 正则表达式全集。
篇幅所限,没有贴过来,请不要恨我。
好了终于可以说说在iOS中怎么应用正则表达式了。
iOS中提供了NSPredicate类来使用正则表达式。
NSString* regex = @"blahblah";
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
[predicate evaluateWithObject:str];
举个栗子吧,我们以新浪邮箱的注册标准来写一个正则表达式。
9AE87C2D-E358-4CAC-B6EF-52EBB9C5997A.png
NSString* regex = @"^(?!)(?!.*$)\w{4,16}@sina.com";
解释:
^表示匹配字符串的开始。$表示字符串的结束位置。
?!表示在任何不匹配字符的地方开始查找字符串。
.表示除\n以外的任意一个字符。表示任意个数。(你不会又忘了吧)。
?!.$ 和之前的?!就排除了收尾为下划线的情况。
\w表示字母数字和下划线,等价于[a-zA-Z0-9_]。
{4,16}表示字符的个数4-16位。
要吐学了么?那继续琢磨正则表达式字符全集吧!