加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式

发布时间:2020-12-13 22:32:39 所属栏目:百科 来源:网络整理
导读:--------正则表达式 一、什么是正则表达式 正则表达式,又称正规表示法, 是对字符串操作的一种逻辑公式。 作用: 1. 正则表达式可以检测给定的字符串是否符合我们定义的逻辑, ok! 2. 也可以从字符串中获取我们想要的特定部分。 confused! 3. 可以迅速地用

--------正则表达式

一、什么是正则表达式

正则表达式,又称正规表示法,是对字符串操作的一种逻辑公式。

作用:

1.正则表达式可以检测给定的字符串是否符合我们定义的逻辑,ok!

2.也可以从字符串中获取我们想要的特定部分。 confused!

3.可以迅速地用极简单的方式达到字符串的复杂控制。 never seen!


二、正则表达式的语法:

先看一个栗子: @“ ^[ 0- 9 ]+ $” 就是一个正则表达式

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

iOS 中验证一个字符串是否符合上述规则的代码:


下面看正则表达式的语法:

首先特殊符号’ ^‘ ‘ $‘ 。他们的作用是分别指出一个字符串的开始和结束。eg:

“ ^one“ :表示所有以” one“ 开头的字符串 ” one cat ”,“ one 123“,….. .;

类似于 - BOOL)hasPrefix:(NSString *)aString;

“a dog$“: 表示所有以” a dog“结尾的字符串(” it is a dog“,….;

类似于 - BOOLhasSuffix: (NSString *)aString;

“ ^apple$“: 表示开始和结尾的都是“ apple“的字符串 ,这个是唯一的;

“ banana“ 表示任何包含“banana”的字符串。

类似于iOS8的新方法 - BOOLcontainsString:(NSString *)aString,搜索子串用。

第二点:

“ *“” +“ “ ?“这三个符号,表示一个或N个字符重复出现的次数。他们分别表示:没有或者更多(【0 +无穷】),一次或者更多(【1 +无穷】),没有或者一次(【01】取整)

下面有几个栗子:

“ ab*“: 表示一个字符串有一个a后面跟着零个或若干个b” a“,“ ab”,“ abb“,…;

“ ab+“: 表示一个字符串有一个a 后面至少跟着一个b或者更多,("ab”,“ abbb”,…;

“ ab?“: 表示一个字符串有一个a后面跟着0个或者一个b,(“a”,“ab”);

“ a?b+$“: 表示字符串的末尾有零个或者一个a跟着一个或几个b (“ b“,“ ab“,“bb”,“abb”,….);


第三点:

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

“ ab{4}“: 表示一个字符串有一个a跟着4b “ abbbb” );

“ ab{1,}“: 表示一个字符串有一个a跟着至少1b (“ab”,“abbbb”,…)

“ ab{3,4}“: 表示一个字符串有一个a跟着 3 4 b (“ abbb”,“abbbb”)

那么,“ *“可用 {0 } 表示,“ +“可以用 {1 }表示,“ ?“可以用 {01}表示;

注意:可以没有下限,但是不能没有上限!例如:“ ab{,5}“是错误的写法。


第四点:

| 表示操作:

“ a|b“:表示一个字符串里有” a“或者“ b“;

“ (a|bcd)ef“: 表示“aef” 或者“bcdef”;

“ (a|b)*c“: 表示一串” a““ b“混合的字符串后面跟一个” c“;


第五点:

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

“ [ab]“:表示一个字符串有一个a b ,(相当于“a|b”;

“ [ a-d]“ : 表示一个字符串包含小写的‘a’ ‘d’ 中的一个 (相当于’a|b|c|d’ “[abcd]”;

“ ^[a-zA-Z]“: 表示一个以字母开头的字符串;

“ [0-9]a ” : 表示a前有一位的数字;

“ [a-zA-Z0-9]$” : 表示一个字符串以字母或数字结束。


第六点:

“ .“ 匹配除“ rn“之外的任何单个字符:

“ a.[a-z]“:表示一个字符串有一个‘ a’ 后面跟着一个任意字符和一个小写字母;

“ ^.{5}$“ : 表示任意1个长度为5的字符串;

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

“ (.)1“: 表示两个连续的相同字符。

“ 10{1,2}“: 表示数字1后面跟着1 2 0 ”10,100”)。

“ 0{3,}“: 表示数字至少3个连续的0 “ 000”,“ 000”,…...

在方括号里用‘ ^ '表示不希望出现的字符,’ ^‘应在方括号里的第一位。

“ @[^a-zA-Z]4@“ 表示两个’ @‘中不应该出现字母


第七点:常用的还有:

“d”匹配一个数字字符。 等价于 [0-9].

“D"匹配一个非数字字符。 等价于[^0-9].

“w"匹配包括下划线的任何单词字符。 等价于“[A-Za-z0-9]”

“ W“匹配任何非单词字符。 等价于“[^A-Za-z0-9]“

iOS中书写正则表达式,碰到转义字符,多加一个” ”,例如:

全数字字符:@“ ^d+$“


三、iOS中正则表达式

1.正则表达式与NSPredicate连用,eg:


2.NSString方法

- NSRange)rangeOfString : (NSString *) aString options : (NSStringCompareOptions ) mask;


NSString *searchText = @“rangeOfString” ;

NSRange range = [searchText rangeOfString : @“ ^[ 0-9 ] + $ “ options:NSRegulatExpressionSearch ];

if (range.location != NSNotFound ) {

NSLog( @“ range: %@“,[searchText subsringWithRange : range] );

}

3.正则表达式类(NSRegularExpression




四、常用的正则表达式:

以下红色字符串是常用的正则表达式(以下正则表达式来自百度百科)

1.验证用户名和密码"^[a-zA-Z]w{5,15}$"

2.验证电话号码:("^(d{3,4}-)d{7,8}$"

eg021-686868680511-6868686

3.验证手机号码"^1[3|4|5|7|8][0-9]d{8}$"

4.验证身份证号15位或18位数字):"d{14}[[0-9],0-9xX]"

5.验证Email地址("^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$")

6.只能输入由数字和26个英文字母组成的字符串:("^[A-Za-z0-9]+$") ;

7.整数或者小数:^[0-9]+([.]{0,1}[0-9]+){0,1}$

8.只能输入数字:"^[0-9]*$"

9.只能输入n位的数字:"^d{n}$"

10.只能输入至少n位的数字:"^d{n,}$"

11.只能输入m~n位的数字:"^d{m,n}$"

12.只能输入零和非零开头的数字:"^(0|[1-9][0-9]*)$"

13.只能输入有两位小数的正实数:"^[0-9]+(.[0-9]{2})?$"

14.只能输入有1~3位小数的正实数:"^[0-9]+(.[0-9]{1,3})?$"

15.只能输入非零的正整数:"^+?[1-9][0-9]*$"

16.只能输入非零的负整数:"^-[1-9][]0-9"*$

17.只能输入长度为3的字符:"^.{3}$"

18.只能输入由26个英文字母组成的字符串"^[A-Za-z]+$"

19.只能输入由26个大写英文字母组成的字符串:"^[A-Z]+$"

20.只能输入由26个小写英文字母组成的字符串:"^[a-z]+$"

21.验证是否含有^%&',;=?$"等字符:"[^%&',;=?$x22]+"

22.只能输入汉字"^[u4e00-u9fa5]{0,68)"> 23.验证URL"^http://([w-]+.)+[w-]+(/[w-./?%&=]*)?$"

24.验证一年的12个月:"^(0?[1-9]|1[0-2])$"正确格式为:"01""09""10""12"

25.验证一个月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正确格式为;"01""09""10""29"“30”~“31”

26.获取日期正则表达式:d{4}[|-|.]d{1-12}[|-|.]d{1-31}?

评注:可用来匹配大多数年月日信息。

27.匹配双字节字符(包括汉字在内)[^x00-xff]

评注:可以用来计算字符串的长度(一个双字节字符长度计2ASCII字符计1

28.匹配空白行的正则表达式:ns*r

评注:可以用来删除空白行

29.匹配HTML标记的正则表达式:<(S*?)[^>]*>.*?</>|<.*? />

评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力

30.匹配首尾空白字符的正则表达式:^s*|s*$

评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式

31.匹配网址URL的正则表达式:[a-zA-z]+://[^s]*

评注:网上流传的版本功能很有限,上面这个基本可以满足需求

32.匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线)^[a-zA-Z][a-zA-Z0-9_]{4,15}$

评注:表单验证时很实用

33.匹配腾讯QQ号:[1-9][0-9]{4,}

评注:腾讯QQ号从10 000 开始

34.匹配中国邮政编码:[1-9]d{5}(?!d)

评注:中国邮政编码为6位数字

35.匹配ip地址:((2[0-4]d|25[0-5]|[01]?dd?).){3}(2[0-4]d|25[0-5]|[01]?dd?)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读