正则表达式:也叫规则表达式,按照一定的规则组成的一个表达式,作用主要是匹配字符串。
正则表达式的组成:是由元字符或者限定字符组成的一个式子
元字符:
. 表示得的是:除了\n以外的任意的一个字符 "fsdfg520"
[] 表示的是:范围.[0-9] 表示的是0到9之间的任意的一个数字,"4567" [0-9]
[1-7] 表示的是1到7之间的任意的数字
[a-z] 表示的是:所有的小写字母的任意的一个
[A-Z] 表示的是:所有大写字母的任意的一个
[a-zA-Z] 表示的是:所有字母的任意的一个
[0-9a-zA-Z] 表示的是:所有的数字或者字母中的一个
[] 另一个含义:把正则表达式中元字符的意义干掉 [.] 就是一个.
限定符
| 表示的是:或者 [0-9]|[a-z] 表示的是要么是数字,要么是小写的字母
() 表示的是:分组,提升优先级 [0-9]([a-z])|[A-Z]
([0-9])([1-5])([a-z]) 三组,从最左边开始计算
* 表示的是:前面的表达式出现了0次到多次
[a-z][0-9]* 表示的是: 小写字母的任意的一个,后面要么是没有数字,要么是多个数字
"asdfa2343241" [a-z][0-9]*
+ 表示的是:前面的表达式出现了1次到多次
[a-z][9]+ 小写字母一个后面最少一个9,或者多个9
"fsdf9asf"
? 表示的是:前面的表达式出现0次到1次,最少0次,最多1次,另一个含义:阻止贪婪模式
[4][a-z]? "1234dsf"
限定符:限定前面的表达式出现的次数
{} 更加的明确前面的表达式出现的次数
{0,} 表示的前面的表达式出现了0次到多次,和*一样的
{1,} 表示的前面的表达式出现了1次到多次,和+一样的
{0,1} 表示的前面的表达式出现了0次到1次,和?一样的
{5,10} 表示的是前面的表达式出现了5次到10次
{4} 表示的是前面的表达式出现了4次
^ 表示的是以什么开始,或者是取非(取反)
^[0-9] 以数字开头
^[a-z] 以小写字母开头
[^0-9] 取反,非数字
[^a-z] 取反,非小写字母
$ 表示的是以什么结束
[0-9][a-z]$ 必须以小写字母结束
\d 数字中的任意一个
\D 非数字中的一个
\s 空白符的一个
\S 非空白符
\w 非特殊符号
\W 特殊符号
\b 单词的边界
写正则表达式,根据字符串来写正则表达式进行匹配
身份证的正则表达式
15位或者18位
([1-9][0-9]{14})|([1-9][0-9]{16}[0-9xX])
练习:
1.座机号码的正则表达式
010-19876754
0431-87123490
[0-9]{3,4}[-][0-9]{8}
\d{3,4}[-]\d{8}
2.QQ号码正则表达式
[1-9][0-9]{4,10}
\d{5,11}
3.手机号码的正则表达式
邮箱的正则表达式,必须记住
sd211_2.-fd@dssdfsd.com.cn
[0-9a-zA-Z_.-]+[@][0-9a-zA-Z_.-]+([.][a-zA-Z]+){1,2}