php 正则表达式

来源:互联网 发布:二层别墅网络覆盖方案 编辑:程序博客网 时间:2024/06/15 09:31

  PHP提供了一种强大的方法创建和匹配文本中的模式。可以创建一些规则来查找文本串中的模式。这些规则就称为正则表达式,或者简写为regex。

  正则表达式表示要匹配的一个字符模式。常常作为验证表单的重要工具:比如电话号码域,电子邮箱域。


  举个例子:/^\d\d\d$/  来简单说明下: 所有正则表达式都是以斜线开始和结尾的,^这个表示从串的开始处匹配,$表示串必须结束。\d代表数字,这个表达式的意思是说,串必须以一个数字开头,中间是一个数字,然后以一个数字结尾,也就表示三个数字了。还可以采用一种更加简洁的方法重写这个正则表达式,这里要用到大括号,大括号用于指示重复:

 /^\d{3}/   它与上面的模式表示同样的含义。

  常见的元字符:

\d:这个元字符要查找一个数字,它会匹配0到9之间的任何数字,\d本身只匹配一位数字,所以如果希望匹配一个两位数字,则要用\d\d或者\d{2}

\s:查找空白符,不只是按下空格键在屏幕上显示的空格子夫;它还能匹配制表符,换行或者回车符。同样滴,要记住\s一次只匹配一个这样的字符。如果希望匹配一行中的两个空格,则需要使用\s\s或者\s{2}


\w:查找任何字母数字字符,换句话说,可以是一个字母或者一个数字。它会匹配以下范围内的任意一个字符,包括a-z和A-Z,以及0-9


^ : 开始位置 


$:结束位置


  正则表达式支持一个成为量词的特性,允许指定字符或者元字符在一个模式中出现多少次:


{}:大括号相当于一个量词,指出前面的字符应当出现多少次。


{min,max}:很明显,是个范围,比如{1,3} 就是要求应当在匹配中出现1,2或者3次。


+ 前面的字符或者元字符必须重复1次或者多次。大于等于1


:前面的字符或者元字符必须出现1次或者根本不出现。0 ,1


* :字符或者元字符可以出现1次或者多次,或者根本不出现。大于等于0


  字符类,是一组匹配单个字符的规则,要指示一组字符或者元字符属于一个字符类,只需要用中括号将它们包围起来 [ ]. 例如:


[0-2] 它会匹配0,1,2
[A-D] 这会匹配A,B,C或者是D.


  可以结合PHP函数preg_match()使用这些模式,这个函数取一个正则表达式模式和一个文本串,如果没有匹配,函数返回false,如果匹配,则返回true。


preg_match($regex,$onestring) $regex,要用单引号包围,第二个参数就是要检查的串了。可以利用preg_match()在脚本中支持复杂的验证功能.
if(preg_match($regx,$onesring)){
成功匹配执行代码。
}else{
不成功的话执行的代码。
}



preg_replace()函数在使用正则表达式完成模式匹配方面比preg_match()更进一步,除了确定一个给定模式是否与一个给定文本串匹配外,它还允许一个替换模式取代串中的匹配文本。


preg_replace($pattern,$replacement,$onestring)


$pattern:需要查找这些不想要的字符.
$replaement:找到一个不想要的字符时,希望把它替换为这个模式。
$onestring:要完成查找--替换的串.


$new_year = preg_replace('/200[0-9]/','2015',' 今年是2015年');

第一个正则告诉preg_replace查找2000到2009的匹配,找到匹配时,会替换为第二个参数,范围是在第三个参数中.








0 0
原创粉丝点击