PHP 之 字符串和正则表达式
1. 中括号
[0~9] 匹配0~9十进制数字
[a~z] 匹配小写a~z字符
[A~Z] 匹配A到Z大写字符
[A~Za~z] 匹配大写A到小写z字符
2.量词
p+ 匹配任何一个至少包含一个p的字符串
p* 匹配任何包含零个或者多个p的字符串
p? 匹配任何包含零个或者1个的字符串
p{2} 匹配任何包含两个连续p的字符串
p{2,3} 匹配任何包含两个或者三个连续p的字符串
p{2,} 匹配任何至少包含两个连续p的字符串
p$ 匹配任何以p结尾的字符串
^p 匹配任何以p开头的字符串
[^a-zA-z] 匹配任何不包含A~z的字符串
p.p 匹配任何包含字符p,接下来是任何字符,再接下来又是p的字符串
^.{2}</b> 匹配任何只包含两个字符的字符串
<b>(*.)</b> 匹配任何被<b></b>包围的字符串
p(hp)* 匹配任何包含一个p,p后面是零个或者多个hp的字符串
3.预定义字符范围
[:alpha:] 小写和大写字母字符串
[:alnum:] 小写和大写字母以及数字
[:cntrl:] 控制字符,如退格符 反斜线
[:digit:] 0~9数字
[:graph:] ASCII33~126 可打印字符
[:lower:] 小写字母
[:punct:] 标点符号
[:upper:] 大写字母
[:space:] 空白字符
[:xdigit:] 十六进制字符
4. 符号解释
$表示行结尾,"de$",表示以de结尾的字符串。
^表示行开始如"^de", 表示以de开头的字符串
() 标记一个子表达式开始和结束位置
\ 将下一个字符标记为特殊字符,或原义字符
* 匹配前面的子表达式零次或者多次
[abc] 字符集合,匹配所包含的任意一字符 例如 '[abc]' 可以匹配"plain" 中的a
[^abc]
{n,m} 最少匹配n次,最多匹配m次 例如 o{1,3} 将匹配 "fooo" 中的前三个o
5.模式修饰符
i 忽略大小写
m 多文本模式
s 单文本模式
x 忽略空白字符
#搜索字符串7个函数:ereg(),ereg_replace(),eregi(),eregi_replace(),split(),sql_regcase() #eregi() #ereg() 根据定义的模式以区分大小写的方式搜索字符串,找到return true else return false #定界符 通常使用"/"作为定界符开始和结束,也可以使用# # 什么时候使用"#"呢?一般是在你的字符串中有很多"/"字符的时候 #preg_match() 进行正则表达式匹配,只匹配一次 return 1,otherwise 0 #preg_match("正则表达式","被匹配的字符串",存放结果的变量名,PREG_OFFSET_CAPTURE(表示匹配的索引位置),起始偏移量(从指定位置开始匹配)) //if(preg_match("/a/","qwertayuio")){ //匹配字串中是否包含a字符 //if(preg_match("/(abc)/","qwerta bcayuio")){ //匹配字串中是否包含abc字串 //if(preg_match("/[abc]/","qwertbycuiop")){ //匹配字串中是否包含a、b或c字字符 //if(preg_match("/[0-9]/","qwertbycuiop")){ //匹配字串中是否包数字 //if(preg_match("/[a-z]/","12345a6789")){ //匹配字串中是否包小写字母 //if(preg_match("/[0-9]{2}/","qwe89rqw9re8qwer",$a)){ //匹配字串中是否包两位的数字 //if(preg_match("/[0-9]{2,}/","qwe12rqw9re8qwer",$a)){ //匹配字串中是否包至少两位的数字 if(preg_match("/[0-9]{2,4}/","qwe12567rqw9re8qwer",$a)){ //匹配字串中是否包至少两位到4位的数字 echo "匹配!"; }else{ echo "不匹配!"; } echo $a[0];