首页 >社区问答列表 >$zz = '/[0-5]\w+/'; 这个+号是干嘛用的,为什么后面有的例子里面没有?

$zz = '/[0-5]\w+/'; 这个+号是干嘛用的,为什么后面有的例子里面没有?

<?php


$zz = '/[0-5]\w+/';



$string = '1C';

$string2 = '1C$';


if(preg_match($zz, $string, $matches)){

   echo '匹配到了,结果为:';

   var_dump($matches);

}else{

   echo '没有匹配到';

}


?>

Q1:$zz = '/[0-5]\w+/';  这个+号是干嘛用的,为什么后面有的例子里面没有?

Q2:$string输出结果是为什么是1C,不应该是“1”吗?

Q3:如果$string输出结果是是1C,那$string1输出不应该是“1C$”吗?

  • 路过
  • 路过    2017-10-21 22:24:593楼

    [0-5]  可以匹配 0-5中的任意一个

    \w 匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]'。$ 不在范围

    + 标识一次或多次

    +0添加回复

  • 回复
  • 寻觅 beyond
  • 寻觅 beyond  已被采纳  2017-10-21 12:35:292楼

    因为$,+,\等都是特殊符号,所以你要匹配这些字符时,必须在$pattern中明确指出要匹配哪个特殊符号(用反斜杠转移),

    比如你要匹配$string2中的$匹配出来,只需要将$zz = '/[0-5]\w+/';改为$zz = '/[0-5]\w+\$/';即可

    +0添加回复

  • 回复
  • 寻觅 beyond
  • 寻觅 beyond    2017-10-21 12:27:021楼

    Q1,+表示匹配前面的原子出现1次或多次

    Q2,参见Q1,+表示前面的\w(字符)出现1次或多次,所以1后面的C也会被匹配

    Q3,$,+,-等符号都是特殊的符号,忘记在哪看过一篇博客,\w不能匹配这些特殊的符号,你可以试一下把$改成其他字母,就能匹配出来了,至于原因,有大牛路过的话,希望讲解一下

    +0添加回复

  • 回复