Keep on going, never give up.

PHP正则表达式语法简介

正则表达式是个最最令人头疼的东西,每次写每次查,记忆时间过不超过三分钟(可能还是多说的),正则表达式也有几种标准,posix和perl标准等。正则表达式不只在Perl、Python、Bash、JAVA等语言中使用,通过扩展或升级,几乎所有语言都会涉及,但是格式和标准未必相同,所以一切以测试为准。目前PHP支持以上两种正则表达式。

一、PHP正则基础规则

PCRE规定正则表达式需要使用定界符(/)。所有的语句均写在定界符内,主要“段型”(天缘自己叫法)规则如下:

  • 开头的 ^ 和结尾的 $ 让PHP从字符串开头检查到结尾。
  • [ 跟 ] 组合用来限制许可输入类型。连续的数字或字母可以用“–”符号连接,如[A-Z] 表示匹配A至Z所有字母,[0-5]表示0-5所有数字,[a-z] 表示a到z所有小写字母,等等。
  • { 跟 }组合用来限制小节重复次数,比如 {5,15} 表示前面段可以重复 5-15 次。
  • ( 跟 ) 组合用来合并小节,定义字符串中必须存在的字符或字符串,比如(hello|world)可以匹配hello或world。
  • (.) 将匹配所有字符,而 [.] 只匹配 "." 本身。

如下符号,如需匹配本身,必须在其前面增加一个转义字符 \,这些字符包括:

( ) [ ] . * ? + ^ | $ \ /

比如\[表示匹配[符号,\\表示匹配一个反斜杠,以此类推。

二、常用元字符

/    定界符

^    匹配字符串的开始

$    匹配字符串的结束

.    匹配除换行符意外的任意字符

?    零或一个紧接前的字符

*    零或多个紧接前的字符

+    一或多个紧接前的字符

\w    匹配字母或数字或下划线

\s    匹配任意的空白符,所谓空白字符是指:空格、制表符、换页符等

\d    匹配数字

\b    匹配单词的开始或结束

\W    \w的反义,即匹配任意非字母,数字,下划线和汉字的字符

\S    \s的反义,即匹配任意非空白符的字符

\D    \d的反义,即匹配任意非数字的字符

\B    \b的反义,即不是单词开头或结束的位置

[x]    匹配x字符,如,[a-z] 所有小写字母,[A-Z] 所有大写字母,[0-9] 所有数字

[^x]    匹配除了 x 之外的任意字符,如 [^abc] 匹配除了 abc 这几个字母之外的任意字符

{3}    3个紧接前的字符

{5,15}    5-15个紧接前的字符

(red|green|blue)    Red 或 green 或 blue

三、正则表达用法归纳

天 缘自己总结了一下,正则表达式用途大概有三:

  • 正则替换 —— 替换符合某个规则下的字符串
  • 正则提取 —— 提取符合某个规则的字符串,这时小节“( )”的用法就尤为重要。
  • 正则验证 —— 验证是否符合某个规则,比如位数验证,类型验证、序列合法验证等。

1、正则替换例子:

$str = '/*ddd*/sss';

preg_replace('[(/*)+.+(*/)]', '', $str);

print_r($str);

这段代码可以替换所有以/*开头并以*/结束的部分为空,也就是批量去除注释。

2、正则提取例子:

$str = '/username/';

preg_match("/^(\/)([^\/.]+)(\/)/",$str,$Arr);

print_r($Arr);

该段代码可以提取$str中的username部分,结果在$Arr[2]中。打印$Arr输出如下:

Array ( [0] => /username/ [1] => / [2] => username [3] => / )

preg_split 可以将整段字符串按匹配到的正则表达式分割成 1、2或更多字符的多段。比如获取标签,无论是用空格还是逗号分隔的:

$tags = preg_split('/[,]/', 'my,tags,unevenly,spaced');
print_r($tags);

3、正则验证例子:

这个用的最多了,比如验证密码:

preg_match( "/^\d*$/",$str);

这句话匹配$str是否全是数字。

参考资料:

PHP与正则表达系列之一: PHP 中的正则表达式: http://www.phpv.net/

正则表达式说明: http://baiy.cn/

更多文章:PHP常用正则表达式PHP字符串正则替换PHP特殊字符串

相关评论(0):  

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

订阅博客

最新文章

本站采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载也必须遵循“署名-非商业用途-保持一致”的创作共用协议. 返回顶部
Copyright@2005-2016 Metsky.com, All rights Reserved.