为什么下面的php regexp不接受';及&;?

为什么下面的php regexp不接受';及&;?,php,regex,Php,Regex,为什么下面的正则表达式不接受”和& 我只想接受'和@和&和目前,它只接受@和 if(!preg_match("/^[a-zA-Z0-9.'@& ]+$/", $source) == 1) $err[] = "Wrong value for source field"; 接受指定字符的正则表达式是否正确 更新: $source = $_POST['source']; if(!empty($source)){ if(preg_match("/^[a-zA-Z0

为什么下面的正则表达式不接受
&

我只想接受
'
@
&
目前,它只接受
@

if(!preg_match("/^[a-zA-Z0-9.'@& ]+$/", $source) == 1)
    $err[] = "Wrong value for source field";    
接受指定字符的正则表达式是否正确

更新:

$source =  $_POST['source'];

if(!empty($source)){

    if(preg_match("/^[a-zA-Z0-9.'@& ]+$/", $source) !== 1)
      $err[] = "Wrong value for source field";  

    elseif(strlen($source) > 50)
        $err[] =  "Max length exceed for source field";
}

它应该接受所有这4个字符。检查你的$源代码,请包括一个失败的测试用例。@Chris:没有必要。它是好的正则表达式@nhahtdh$source value是=
我是一名开发人员&@。
顺便说一句,你不需要
==1
只要使用:
如果(!preg_match(“/^[a-zA-Z0-9.@&]+$/”,$source))