正则表达式
什么是正则表达式?
是把文本或字符串按照一定的规范或模型表示的方法,常用于文本的匹配操作。
正则表达式的语法规则
一般情况下,正则表达式由两部分组成,分别是元字符和文本字符。元字符就是具有特殊含义的字符,例如?
和*
等,文本字符就是普通的文本,例如字母和数字等。
方括号 []
方括号内的一串字符是将要用来进行匹配的字符。例如正则表达式在方括号内的[name]
是指在目标字符串中寻找字幕n
、a
、m
、e
。[eeg]
表示在目标字符串中寻找字符e
和g
。
连字符 -
通常情况下,不可能逐个列出所有的字符。比如要匹配26个英文字符,则把26个字幕全部输入会比较麻烦。可以这样表示:
[a-z]
表示匹配英文小写从a到z的任意字符。[A-Z]
表示匹配英文大写从A到Z的任意字符。- [A-Za-z]` 表示匹配英文大小写从大写A到小写z的任意字符。
[0-9]
表示匹配从0到9的任意十进制数。
由于字母和数字的区间固定,因此根据这样的表示方法,即[开始-结束]
,我们可以重新定义区间大小,如[2-5]
、[f-m]
等。
点号字符 .
点号字符在正则表达式中是一个通配符,代表所有字符和数字,例如,“.er
”表示所有以er
结尾的三个字符的字符串,可以是1er
、ter
、ger
、#er
等。
限定符 +*?{n,m}
+
加号表示其前面的字符至少有一个。例如6+
表示目标字符串包含至少一个6。*
星号表示前面的字符不止一个或零个。例如x*
表示目标字符串包含0或不止一个x。?
问号表示前面的字符为一个或零个。例如*?
表示目标字符串包含0或一个x。{n,m}
花括号表示其前面的字符有n或m个。例如a{3,7}
表示目标字符串包含3个或5个a。a{3}
表示目标字符串包含3个a。a{3,}
表示目标字符串至少包含3个a。
点号和星号可以一起使用,如.*
表示匹配任意字符。
行定位符 ^和$
行定位符用来确定匹配字符串索所出现的位置。
如果是在目标字符串头部出现,就是用符号^
;如果是在目标字符串结尾出现,就使用符号$
。
例如:^anything
是指anything只能出现在目标字符串开头,985211$
是指985211只能出现在目标字符串结尾。
可同时使用这两个符号,如^[a-z]$
表示目标字符串只包含从a到z的单个字符。
排除字符 [^]
符号^
在方括号内所代表的意义则完全不同,表示一个逻辑“否”,排除匹配字符串在目标字符串出现的可能。例[^0-9]
表示目标字符串包含从0到9以外的任意其它字符。
括号字符 ()
括号字符表示子串,所有对包含在子串内字符的操作都是以子串为整体进行的。括号字符也是把正则表达式分成不同部分的操作符。
选择字符 |
选择字符表示“或”,例com|cn|com.cn
表示目标字符串包含com或cn或com.cn。
转义字符\
与反斜线\\
由于\
在正则表达式中属于特殊字符,如果单独使用此字符,就直接表示作为特殊字符的转义符。如果要表示反斜线字符本身,就在此字符前添加转义字符\
即\\
。
认证email的正则表达
在处理表单数据的时候,对用户的email进行认证,可以用正则表达式匹配来判断用户输入的是否为一个email地址。格式:
^[A-za-z0-9_.]+@[A-Za-z0-9_]+\.[A-Za-z0-9.]+$
其中^[A-za-z0-9]+
表示至少有一个英文字符、数字、下划线、点号,或者这些字符的组合。
@
表示email中的@
[A-Za-z0-9_]+
表示至少有一个英文大小写字符、数字、下划线,或者这些字符的组合。
\.
表示email中“.
com”中的那个点。由于这个点只是点本身,因此用了转义符反斜杠对它进行转义。
[A-Za-z0-9.]+$
表示至少有一个英文大小写字符、数字、点号或者这些字符的组合,并且知道这个字符串的结尾。
如何使用正则表达式对字符串进行匹配
需要用到ereg()
函数。用于在目标字符串中寻找符合特定正则表达规范的字符子串,根据指定的模式来匹配文件名或字符串。
ereg()
函数对大小写不敏感。eregi()
函数区分大小写。这是两个函数不同之处。
语法:
ereg(正则表达式规范, 目标字符串, 数组)
使用正则表达式替换字符串子串
需要用到的函数是ereg_replace()
和eregi_replace()
函数,跟上面一样,前者对大小写不敏感,后者区分大小写。格式:
ereg_replace(正则表达式, 将要取代字符串子串, 目标字符串)
我决定不写笔记了,太耗神了。以后把遇到的一些问题随便记录上来就行了。