Regex Laravel正则表达式验证奇怪的行为

Regex Laravel正则表达式验证奇怪的行为,regex,validation,laravel-4,preg-match,Regex,Validation,Laravel 4,Preg Match,当我使用preg\u match验证输入时,它的行为符合我的要求 $str = "abc-'xx"; $is_valid = preg_match("/[^A-Za-z'-]/", $str); // output => true 但当我使用laravel验证时 $rules = [ 'name' => "regex:/[^A-Za-z'-]/" ]; 或 $rules = [ 'name' => ["regex:/[^A-Za-z'-]/"] ]; 它总

当我使用
preg\u match
验证
输入时,它的行为符合我的要求

$str = "abc-'xx";
$is_valid = preg_match("/[^A-Za-z'-]/", $str); // output => true
但当我使用laravel验证时

$rules = [
    'name' => "regex:/[^A-Za-z'-]/"
];

$rules = [
    'name' => ["regex:/[^A-Za-z'-]/"]
];
它总是失败


为什么??我如何解决这个问题呢?

我可以通过使用regex
/^[A-Za-z\-\']+$/

$rules = [
    'name' => ["regex:/^[A-Za-z\-\']+$/"]
];

但是找不到原因,希望有人能解释一下。

添加锚定
^
$
+
,尝试
/^[^a-Za-z'-]+$/
仍然不起作用:(尝试
$rules=array('name'=>array(“regex://^[^a-Za-z'-]*$/”)
是否在php.ini中启用了
addslashes
?如果未启用,请尝试启用并使用
'name'=>[“regex://^[A-Za-z'-]+$/“]