定位字符是正则表达式中又一类很是重要的字符,它的主要做用是用于对字符在匹配对象中的位置进行描述。 git
^:表示匹配的模式出如今匹配对象的开头(和在"[]"里面不一样) 正则表达式
$:表示匹配的模式出如今匹配对象的末尾 数组
空格:表示匹配的模式出如今开始和结尾的两个边界之一 ide
"/^he/":能够匹配以"he"字符开头的字符串,好比hello、height等等; 函数
"/he$/":能够匹配以"he"字符结尾的字符串即she等; spa
"/ he/":空格开头,和^的做用同样,匹配以he开头的字符串; 对象
"/he /":空格结束,和$的做用同样,匹配以he结尾的字符串; 字符串
"/^he$/":表示只和字符串"he"匹配 input
2、特殊字符 string
元字符是正则表达式中一类有特殊意义的字符,用来描述其前导字符(即元字符前面的字符)在被匹配的对象中出现的方式。元字符自己是一个个单一的字符,可是不一样或者相同的元字符组合起来能够构成大的元字符。
元字符:
{}:大括号用来精确指定匹配元字符出现的次数。
/a{1,3}/ 表示字符a能够出现1至3次
+:"+"字符用来匹配元字符前的字符出现一次或者屡次。
/a+/ 表示a能够出现一次或者屡次
*:"*"字符用来匹配元字符前的字符出现零次或者屡次。
/a*/ 表示字符a能够出现0到屡次
?:"?"字符用来匹配元字符前的字符出现零次或者1次。它还有一个很是重要的做用,即"贪婪模式"。
/a?/ 表示字符a能够出现0到1次
.:用于匹配除换行符以外的全部字符,若是通过修饰符"s"的修饰,"."能够表明任意字符。
|:表示在多个范围选择
中括号
正贼表达式中使用[]来表示匹配的范围。
[a-z]:表示能够出现a到z这26个小写字母
[a-z]{1,3}:表示出现1至3个小写字母
PHP正则表达式给出了几种"[]"的默认值:
[:alpha:]:匹配任何字母
[:alnum:]:匹配任何字母和数字
[:digit:]:匹配任何数字
[:space:]:匹配空格符
[:upper:]:匹配任何大写字母
[:lower:]:匹配任何小写字母
[:punct:]:匹配任何标点符号
[:xdigit:]:匹配任何16进制数字
转义符号
下面这些特殊字符在转义符号""转义后表明的含义以下:
s:匹配单个的空格符
S:用于匹配除单个空格符以外的全部字符。
d:用于匹配从0到9的数字,至关于"/[0-9]/"。
w:用于匹配字母,数字或下划线字符,至关于"/[a-zA-Z0-9_]/"。
W:用于匹配全部与w不匹配的字符,至关于"/[^a-zA-Z0-9_]/"。
D:用于匹配任何非10进制的数字字符。
圆括号
PHP正则表达式容许使用()将表达式组合成一个总体。
^([a-z0-9]{3,6}):以3-6个小写字母或数字开头。
3、贪婪模式
好比咱们要匹配以字母"a"开头字母"b"结尾的字符串,可是须要匹配的字符串在"a"后面含有不少个"b",好比"a bbbbbbbbbbbbbbbbb",那正则表达式是会匹配第一个"b"仍是最后一个"b"呢?若是你使用了贪婪模式,那么会匹配到最后一个"b",反之只是匹配到第一个"b"。
使用贪婪模式的表达式以下:
/a.+?b/
/a.+b/U
不使用贪婪模式的以下:
/a.+b/
4、修饰符
在正则表达式里面的修饰符能够改变正则的不少特性,使得正则表达式更加适合你的须要(注意:修饰符对于大小写是敏感的,这意味着"e"并不等于"E")。正则表达式里面的修饰符以下:
i :若是在修饰符中加上"i",则正则将会取消大小写敏感性,即"a"和"A" 是同样的。
m:默认的正则开始"^"和结束"$"只是对于正则字符串若是在修饰符中加上"m",那么开始和结束将会指字符串的每一行:每一行的开头就是"^",结尾就是"$"。
s:若是在修饰符中加入"s",那么默认的"."表明除了换行符之外的任何字符将会变成任意字符,也就是包括换行符!
x:若是加上该修饰符,表达式中的空白字符将会被忽略,除非它已经被转义。
e:本修饰符仅仅对于replacement有用,表明在replacement中做为PHP代码。
A:若是使用这个修饰符,那么表达式必须是匹配的字符串中的开头部分。好比说"/a/A"匹配"abcd"。
E:与"m"相反,若是使用这个修饰符,那么"$"将匹配绝对字符串的结尾,而不是换行符前面,默认就打开了这个模式。
U:和问号的做用差很少,用于设置"贪婪模式"。
5、正则表达式函数
PHP的Perl兼容正则表达式提供的多个函数,分为模式匹配,替换和匹配数目等等:
1、preg_match :
函数格式:int preg_match(string pattern, string subject, array [matches]);
这个函数会在string中使用pattern表达式来匹配,若是给定了[regs],就会将string记录到[regs][0]中,[regs][1]表明使用括号"()"记录下来的第一个字符串,[regs][2]表明记录下来的第二个字符串,以此类推。preg若是在string中找到了匹配的pattern,就会返回"true",不然返回"false"。
2、preg_replace :
函数格式:mixed preg_replace(mixed pattern, mixed replacement, mixed subject);
这个函数会使用将string中符合表达式pattern的字符串所有替换为表达式replacement。若是replacement中须要包含pattern的部分字符,则能够使用"()"来记录,在replacement中只是须要用"/1"来读取。
3、preg_split :
函数格式:array preg_split(string pattern, string subject, int [limit]);
这个函数和函数split同样,区别仅在与split能够使用简单正则表达式来分割匹配的字符串,而preg_split使用彻底的Perl兼容正则表达式。第三个参数limit表明容许返回多少个符合条件的值。
4、preg_grep :
函数格式:array preg_grep(string patern , array input);
这个函数和preg_match功能基本上,不过preg_grep能够将给定的数组input中的全部元素匹配,返回一个新的数组。