正则表达式

正则表达式基本概念

1、 普通字符

 

普通字符:字母、数字、汉字、下划线以及后边所提到的没有特殊定义的符号。

简单转义字符:

表达式   可匹配

/r,/n     代表回车和换行符

/t       制表符

//       代表”/”本身

 

2、简单转义字符

 

还有其他一些在后边章节中有特殊用处的标点符号,在前面加 "/" 后,就代表该符号本身。比如:^, $ 都有特殊意义,如果要想匹配字符串中 "^" "$" 字符,则表达式就需要写成 "/^" "/$"

 

表达式

可匹配

/^

匹配 ^ 符号本身

/$

匹配 $ 符号本身

/.

匹配小数点(.)本

 

举例1:表达式 "/$d",在匹配字符串 "abc$de" ,匹配结果是:成功;匹配到的内容是:"$d";匹配到的位置是:开始于3,结束于5

 

3、能够与多种字符匹配的表达式

 

正则表达式中的一些表示方法,可以匹配多种字符中的任意一个字符,比如,表达式’/d’可以匹配任意一个数字,虽然可以匹配其中任意字符,但是只能是一个,不是多个。这就好比玩扑克牌,大小王可以代替任意一张牌,但是只能代替一张牌。

表达式

可匹配

/d

任意一个数字,0~9 中的任意一个

/w

任意一个字母或数字或下划线,也就是 A~Z,a~z,0~9,_ 中任意一个

/s

包括空格、制表符、换页符等空白字符的其中任意一个

.

小数点可以匹配除了换行符(/n)以外的任意一个字符

 

举例1:表达式 "/d/d",在匹配 "abc123" ,匹配的结果是:成功;匹配到的内容是:"12";匹配到的位置是:开始于3,结束于5

 

举例2:表达式 "a./d",在匹配 "aaa100" ,匹配的结果是:成功;匹配到的内容是:"aa1";匹配到的位置是:开始于1,结束于4

 

4、自定义能够匹配多种字符的表达式

 

使用方括号[]包含一系列字符,能够匹配其中任意一个字符。用[^]包含一系列字符,则能够匹配其中字符之外的任意一个字符。同样的道理,虽然可以匹配其中任意一个,但是只能是一个,不是多个。

表达式

可匹配

[ab5@]

匹配 "a" "b" "5" "@"

[^abc]

匹配 "a","b","c" 之外的任意一个字符

[f-k]

匹配 "f"~"k" 之间的任意一个字母

[^A-F0-3]

匹配 "A"~"F","0"~"3" 之外的任意一个字符

    举例1:表达式 "[bcd][bcd]" 匹配 "abc123" ,匹配的结果是:成功;匹配到的内容是:"bc";匹配到的位置是:开始于1,结束于3

    举例2:表达式 "[^abc]" 匹配 "abc123"
,匹配的结果是:成功;匹配到的内容是:"1";匹配到的位置是:开始于3,结束于4

5、修饰匹配次数的特殊符号

 

前面讲到的表达式,无论只是匹配一种字符表达式,还是可以匹配多种字符其中任意一个的表达式,都只能匹配一次,如果使用表达式再加上修饰匹配次数的特殊符号,那么可以不用重复书写表达式就可以重复匹配。

表达式

作用

{n}

表达式重复n次,比如:"/w{2}" 相当于 "/w/w""a{5}" 相当于 "aaaaa"

{m,n}

表达式至少重复m次,最多重复n次,比如:"ba{1,3}"可以匹配 "ba""baa""baaa"

{m,}

表达式至少重复m次,比如:"/w/d{2,}"可以匹配 "a12","_456","M12344"...

?

匹配表达式0次或者1次,相当于 {0,1},比如:"a[cd]?"可以匹配 "a","ac","ad"

+

表达式至少出现1次,相当于 {1,},比如:"a+b"可以匹配 "ab","aab","aaab"...

*

表达式不出现或出现任意次,相当于 {0,},比如:"/^*b"可以匹配 "b","^^^b"...

    举例1:表达式 "/d+/.?/d*" 在匹配 "It costs $12.5" ,匹配的结果是:成功;匹配到的内容是:"12.5";匹配到的位置是:开始于10,结束于14

    举例2:表达式 "go{2,8}gle" 在匹配 "Ads by goooooogle"
,匹配的结果是:成功;匹配到的内容是:"goooooogle";匹配到的位置是:开始于7,结束于17

6、其他一些代表抽象意义的特殊符号

 

表达式

作用

^

与字符串开始的地方匹配,不匹配任何字符

$

与字符串结束的地方匹配,不匹配任何字符

/b

匹配一个单词边界,也就是单词和空格之间的位置,不匹配任何字符

进一步的文字说明仍然比较抽象,因此,举例帮助大家理解。

举例1:表达式 "^aaa" 在匹配 "xxx aaa xxx" ,匹配结果是:失败。因为 "^" 要求与字符串开始的地方匹配,因此,只有当 "aaa" 位于字符串的开头的时候,"^aaa" 才能匹配,比如:"aaa xxx xxx"

举例2:表达式 "aaa$" 在匹配 "xxx aaa xxx" ,匹配结果是:失败。因为 "$" 要求与字符串结束的地方匹配,因此,只有当 "aaa" 位于字符串的结尾的时候,"aaa$" 才能匹配,比如:"xxx xxx aaa"

举例3:表达式 "./b." 在匹配 "@@@abc" ,匹配结果是:成功;匹配到的内容是:"@a";匹配到的位置是:开始于2,结束于4

进一步说明:"/b" "^" "$" 类似,本身不匹配任何字符,但是它要求它在匹配结果中所处位置的左右两边,其中一边是 "/w" 范围,另一边是 "/w" 的范围。

举例4:表达式 "/bend/b" 在匹配 "weekend,endfor,end" ,匹配结果是:成功;匹配到的内容是:"end";匹配到的位置是:开始于15,结束于18

  一些符号可以影响表达式内部的子表达式之间的关系:

表达式

作用

|

左右两边表达式之间 "" 关系,匹配左边或者右边

( )

(1). 在被修饰匹配次数的时候,括号中的表达式可以作为整体被修饰
(2).
取匹配结果的时候,括号中的表达式匹配到的内容可以被单独得到

举例5:表达式 "Tom|Jack" 在匹配字符串 "I'm Tom, he is Jack" ,匹配结果是:成功;匹配到的内容是:"Tom";匹配到的位置是:开始于4,结束于7。匹配下一个时,匹配结果是:成功;匹配到的内容是:"Jack";匹配到的位置时:开始于15,结束于19

举例6:表达式 "(go/s*)+" 在匹配 "Let's go go go!" ,匹配结果是:成功;匹配到内容是:"go go go";匹配到的位置是:开始于6,结束于14

举例7:表达式 "(/d+/.?/d*)" 在匹配 "10.9,20.5" ,匹配的结果是:成功;匹配到的内容是:"20.5";匹配到的位置是:开始于6,结束于10。单独获取括号范围匹配到的内容是:"20.5"

 

1、  匹配邮箱

 

匹配所有:"^[/w-]+(/.[/w-]+)*@[/w-]+(/.[/w-]+)+$"

 

2、  匹配用户名

6~16个英文字母数字下划线组成,只能以字母下划线开头:/^[A-Za-z_]+/w+{5,15}$/

6~16个任意的字母数字下划线:/^/w{6,16}$/

 

3、  匹配密码

6~8个数字组成:/^/d{6,8}$/    /^[0-9]{6,8}$/

 

4、  匹配手机号

粗略:/^1[358][0-9]{9}$/

详细:

/^0{0,1}1(3[0-9]|5[012389]|8[689])/d{8}$/

/^0{0,1}1(3[0-9]|5[0-3]|5[8-9]|8[6-9])[0-9]{8}$/

5、  匹配固定电话

格式:010-85183671 01085183671

/^0/d{2,3}-{0,1}/d{7,9}$/

/^0/d{2,3}-?/d{7,9}$/

6、  匹配日期

2010-6-2

/^/d{4}-/d{2}-/d{2}$/

2010-6-2 12:59:30

/^/d{4}-/d{2}-/d{2} [0-2][0-9]:[0-6][0-9]:[0-6][0-9]$/

7、  匹配秒钟

 

/^ [0-2][0-9]:[0-6][0-9]:[0-6][0-9]$/

 

8、  匹配IP地址

 

/^/d{0,3}(./d{0,3}){3}$/

/^/d(./d+){3}$/

阅读更多
个人分类: 日常项目小技巧
想对作者说点什么? 我来说一句

正则表达式正则表达式

2011年01月10日 15KB 下载

正则表达式

2010年05月21日 97B 下载

正则表达式入门指导.ppt

2011年04月02日 694KB 下载

正则表达式总结文档集合

2009年03月19日 370KB 下载

xml需求文档及正则表达式介绍

2011年05月20日 12.68MB 下载

正则表达式简单课程学习

2011年07月10日 12KB 下载

RegexTester 正则表达式

2018年01月12日 69KB 下载

正则指引书籍

2018年04月23日 30.62MB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭