2015-10-29 4 views
0

Когда я использую preg_match для проверки input, он ведет себя так, как я хочу.Laravel regex validation странное поведение

$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'-]/"] 
]; 

это всегда не удалось.

Почему? и как я могу это решить?

+0

Добавить якорей '^' и '$' и '+', 'попытаться/^ [^ A-Za-Z '-] + $ /' – Tushar

+0

до сих пор не работает :( –

+0

Try '$ Правила = массив ( 'name' => array ("regex:/^ [^ A-Za-z '-] * $ /") ); ' –

ответ

0

я был в состоянии решить эту проблему с помощью регулярных выражений /^[A-Za-z\-\']+$/

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

Но не мог найти причину, Цените кто-то может объяснить это.

+0

Включено ли' addslashes' в php.ini? Если нет, попробуйте включить и использовать '' name '=> ["regex:/^ [A-Za-z' -] + $ /"] '. –