来自慕课网的笔记整理慕课网

在线正则表达式测试

界定符

表示这个正则表达式的开始和结束

/[0-9]/   //推荐
#[0-9]#   //推荐
{[0-9]}   //不推荐 ,因为 {} 是正则表达式的运算符

###原子### 正则表达式中的最小匹配单位,通常它只是Unicode编码表中的某一个字符。原子分为2种,可见和不可见。 1. 可见原子:Unicode编码表中用键盘输出后肉眼可见的字符 1. 标点 ; " _ ? .等等 2. 英文字母数字 a-z,A-Z,0-9 3. 汉字、日文、阿拉伯文等其他语言文字 4. ,,,等数理化公式符号 5. 其他可见字符 2. 不可见原子:Unicode编码表中用键盘输出后肉眼不可见的字符

1. 换行符 `\n`
2. 回车 `\r`
3. 制表符 `\t`
4. 空格 ` `
5. 其他不可见符号

###元字符###

  • | 匹配两个或多个分支选择
  • [ ] 匹配方括号中任意一个原子
  • [^]匹配不再方括号中的任意字符(^ 必须紧邻 [  ,否则不生效,^ 会变成普通字符)
  • []  中间加入 - 表示范围 [a-z] //表示a-z中的所有字母abc.........z

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

  • \f    form feed,换版、换页的意思,以前打印机遇到这个换版符就会换另一张纸。

  • \n    line feed、换行的意思,打印机遇到换行符,就移到下一行。

  • \r    carriage return的缩写、回车的意思,打印机遇到回车符,就会移回行首。

  • \t    tab、制表的意思,tab键按一下就是一个制表符,用来对齐文本作用,让排版像表格一样整齐。

  • \v   vertical tab的缩写,垂直制表符。

  • \d   digit,数字的意思。匹配任意非十进制数字[0-9]

  • \D   匹配任意非十进制数字 [^0-9]

  • \s    white space 匹配不可见原子 [\f\n\r\t\v]

  • \S  匹配任意一个可见原子[^\f\n\r\t\v]

  • \w   word,(其实是包括字母、数字、下划线)。[a-zA-Z0-9_]

  • \W   [^a-zA-Z0-9_]

###量词###

  • {n}原子恰好出现n次
  • {n,}原子至少出现n次
  • {n,m}原子最少n次,最多m次
  • * 等价于{0,}
  • + 等价于{1,}
  • ? 等价于{0,1}

###边界控制### - ^ 匹配字符串开始的位置 - $ 匹配字符串结束的位置 - () 匹配其中的整体为一个原子

###修正模式### 部分来自新浪博客 - U/u 懒惰模式/贪婪模式 - i忽略大小写 - x 忽略空白 - s 让“.”匹配包括换行符在内的所有字符,将字符串视为单行,换行符作为普通字符; - e 配合函数preg_replace()使用,可以把匹配来的字符串当作正则表达式执行 - m 将字符串视为多行,不管是哪行都能匹配,但是这个只有当使用^$模式时才会起作用,在其他的模式中,加不加入m都可以进行多行匹配(其实说多行的字符串也是一个普通字符串) - A 强制从目标字符串开头匹配

//$mode="/abc/A";
//可以与$str="abcsdfi"匹配,
//不可以与$str2="sdsdabc"匹配;
//因为$str2不是以abc开头;
  • D 如果使用$限制结尾字符,则不允许结尾有换行; //模式为:$mode="/abc$/"; //可以与最后有换行的$str="adshabc\n"匹配; //元子符$会忽略最后的换行\n; //如果模式为:$mode="/abc/D", //则不能与$str="adshabc\n"匹配, //修正符D限制其不可有换行;必需以abc结尾;

###懒惰匹配###

$pattern = '/imooc.*123/U';
$subject = 'I love imooc__123123123123123123';
$matches = array();
preg_match($pattern,$subject,$matches);
var_dump($matches);
array(1) {
   [0]=>
   string(10) "imooc__123"
}

###匹配忽略空白###

$pattern = '/imo   oc.*123/x';
$subject = 'i am imooc__123123123123';

preg_match_all($pattern,$subject,$matches);
var_dump($matches);
array(1) {
    [0]=>
    array(1) {
       [0]=>
       string(19) "imooc__123123123123"
    }
}

###让  .  匹配 换号符###

$pattern = '/imooc.*123/s';
$subject = 'i am imooc__1231231
23123';

preg_match_all($pattern,$subject,$matches);
var_dump($matches);
array(1) {
    [0]=>
    array(1) {
        [0]=>
        string(21) "imooc__1231231 23123"
    }
}