preg_match中只有字母数字和一个特殊字符正则表达式

时间:2014-04-25 03:48:56

标签: php regex preg-match

$str = 'test-test-test-test\\50-test-37447';
     if(preg_match('/[a-zA-Z0-9-]/',$str,$matches)){
         echo "<pre>true";print_r($matches);echo "</pre>";
     }else{
         echo "<pre>false";print_r($matches);echo "</pre>";
     }

总是回归真实?哪里错了?

1 个答案:

答案 0 :(得分:1)

它返回true,因为你的正则表达式调用该集合中的任何一个字符(因此从开始的t是第一个匹配)。

如果您希望整个字符串仅由这些字符组成,请使用:

^[a-zA-Z0-9-]*$

^$标记分别表示字符串的开头和结尾,*表示前面的&#34;对象&#34;中的零个或多个。因此,这意味着整个字符串必须由您指定的零个或多个字符集组成。

这会导致\字符在测试字符串中失败。