iOS之正则表达式(一)

来源:互联网 发布:ubuntu修改文件所有者 编辑:程序博客网 时间:2024/06/08 19:05

以前经常要用到正则表达式,比如判断手机号码,邮箱格式等等,只知道在网上copy代码,不知其所以然,所以学习了一下正则表达式,今天来讲讲。。。

1~什么是正则表达式

正则表达式又称正规表示法,是对字符串操作的一种逻辑公式。正则表达式可以检测给定的字符串是否符合我们定义的逻辑,也可以从字符串中获取我们想要的特定部分。它可以迅速的用机简单的方式找到字符串的复杂控制。

2~正则表达式的语法

看一个过滤纯数字的demo:

- (BOOL) validataNumber:(NSString *)string{        NSString * number=@"^[0-9]+$";    NSPredicate * numberPre =[NSPredicate predicateWithFormat:@" SELF MATCHES %@ ",number];        return [numberPre evaluateWithObject:string];}

其中一个语句就是正则表达式:@"^[0-9]+$"

它代表了字符串中只能包含>=1个0-9的数字,语法是不是有一些怪异?哈哈

下面我们来介绍正则表达式的语法(iOS中对转义字符的处理有一些不同,语法基本相同)

语法:

特殊字符 '^' 和 '$' 他们的作用是分别指出一个字符串的开始和结束

“^one”:表示所有以"one" 开始的字符串 (比如: "one cat" ,"one something"   eg);

类似于- (BOOL) hasPrefix:(NSString *)aString;  前缀匹配


"two$":表示所有以"two" 结尾的字符串  (比如:" something two" eg);

类似于- (BOOL) hasSuffix:(NSString *)aString; 后缀匹配


"^person$":`表示开始和结尾都是 "person"的字符串,这个是唯一的~;


"person":表示任何包含"person" 的字符串。

类似于- (BOOL) containString:(NSString *)aString; 搜索子串用的。


"*","+","?" 这三个符号,表示一个或者N个字符重复出现的次数。他们分别表示“没有或者更多”,“一次或者更多”,“没有或者一次”。

比如:

1、"ab*"表示这个字符串有一个a后面跟着零个或者多个b("a" "ab" "abb" "abbb"  eg)

2、"ab+"表示这个字符串有一个a后面跟着一个或者多个b ("ab" "abb" "abbb"  eg)

3、"ab?"表示这个字符串有一个a后面跟着一个b或者没有b  ("a" "ab" 两种)

4、"a?b+$"表示这个字符串的末尾有一个或者零个a跟着一个或者更多b("...b" "...ab" "...bb" "...abb"  eg)


可以用大括号括起来 {} ,表示一个或者重复的具体范围。例如

1、"ab{4}" 表示这个字符串有一个a跟着4个b("abbbb")

2、"ab{3,4}"表示这个字符串有一个a跟着3个或者4个b("abbb" "abbbb")

3、"a{1,}"表示这个字符串有一个a跟着多个b,效果跟"ab+" 一样("ab" "abb" "abbb"  eg)

所以上面的三个特殊符号可以分别用"{0,}"  "{1,}"  "{0,1}" 表示 (注:没有上限是不允许的,比如:"{,5}" 是错误的语法)


"|"表示”或“语法,比如""(a|bcd)ef"表示这个字符串是"aef"或者"bcdef"


方括号"[ ]" 表示在括号内的众多字符中,选择1-N个括号内的符号语法作为结果,例如:

1、"[ab]"  表示a或者b相当于 "a|b"

2、"[a-d]" 表示”a|b|c|d"或者"[abcd]",

3、"^[a-zA-Z]" 表示一个以字母开头的字符串

4、"[0-9]a" 表示一个字符串有一个数字加一个a

5、"[a-zA-Z0-9]$" 表示一个字符串以字母或者数字结尾


"." 匹配出"/r/n"之外的任何单个字符串,例如:

"^.{5}$" 表示这个字符串长度为5


"\num" 其中num是一个正整数。表示"\num"之前的字符出现相同的个数,例如:

1、"(.)\2"表示两个相同的字符

2、"10\{1,2\]" 表示数字1后面跟着1个或者2个0("10"  "100")

3、”0{3,\}“表示只是3个0("000"  "0000"  eg)


 在方括号中用 "^" 表示不希望出现的字符 其中 "^" 应该出现在方括号的第一位 比如“

"@[^a-zA-Z]@" 表示字符串在"@@"之间不希望出现字母


常用的一些还有:

"\d"  匹配一个数字字符,等价于[0-9]

"\D"  匹配一个非数字字符,等价于[^0-9]

"\w"  匹配包括下划线在内的任何单词字符,等价于"[a-zA-Z0-9_]"

"\W" 匹配任何非单词字符,等价与"[^a-zA-Z0-9_]"


在iOS中如果遇到转义字符的话,要多加一个"\" 例如:

全数字字符:@"^\\d+$"



OK !正则表达式就介绍到这里吧,下篇讲一些常用的正则表达式。




0 0
原创粉丝点击