php正则表达式笔记

虽然正则表达式已经很熟悉了,不过作为重要的基础部分,笔记还是不能免掉的。
1.中括号

[0-9]匹配0-9
[a-z]匹配a-z小写字母
[A-Z]匹配A-Z大写字母
[a-zA-Z]匹配所有大小写字母
可以使用ascii来制定更多

2.量词

p+匹配至少一个含p的字符串
p*陪陪任何包含0个或多个p的字符串
p?匹配任何包含0个或一个p的字符串
p{2}匹配包含2个p的序列的字符串
p{2,3}匹配任何包含2个或3个的字符串
p$匹配任何以p结尾的字符串
^p匹配任何以p开头的字符串
[^a-zA-Z]匹配任何不包含a-zA-Z的字符串
p.p匹配任何包含p、接下来是任何字符、再接下来有又是p的字符串
^.{2}$匹配任何值包含2个字符的字符串
<b>(.*)</b>匹配任何被<b></>包围的字符串
p(hp)*匹配任何一个包含p,后面是多个或0个hp的字符串

3.预定义字符范围

[:alpha:]同[a-zA-Z]
[:alnum:]同[a-zA-Z0-9]
[:cntrl:]匹配控制字符,比如制表符,反斜杠,退格符
[:digit:]同[0-9]
[:graph:]所有ASCII33~166范围内可以打印的字符
[:lower:]同[a-z]
[:punct:]标点符号
[:upper:]同[A-Z]
[:space:]空白字符,可以是空格、水平制表符、换行、换页、回车
[:xdigit:]十六进制符同[a-fA-F0-9]

4.ereg语句可以区分大小写来判断,下例

if?(ereg("([^a-z])","aaaaZaaaaaaa"))?echo?"不全是小写的!";

ereg还可以返回一个数组 例如

$url="http://www.xuandun.net";
$a=ereg("^(http://www)\.([[:alnum:]]+)\.([[:alnum:]]+)",$url,$regs);
echo?$regs[0],"<br>";
echo?$regs[1],"<br>";
echo?$regs[2],"<br>";
echo?$regs[3],"<br>";

得到

http://www.xuandun.net
http://www
xuandun
net

5.eregi语句不区分大小写判断

if?(eregi("^[a-zA-Z0-9]{8,10}$","999999999"))?echo?"是八到十位的数字与字母";

6.以区分大小写的方式替换文本的ereg_replace

$string?=?"This?is?a?test";
//替换is为was
echo?ereg_replace("?is",?"?was",?$string);

还可以使用\来反引用小括号里的字符0表示全部1表示第一个匹配的字符串以此类推最多9个!
具体手册
不区分大小写替换文本的eregi_replace
用法同上
7.区分大小写的方式划分字符串为不同元素split语句

print_r(split("[\n\t]","我爱\n北京\t天安门"));

不区分大小写的划分:spliti语句用法同上
8.调节只支持区分大小写的正则表达式sql_regcase

$name="xuandun";
echo?sql_regcase($name);

未完待续

php

添加新评论