web-dev-qa-db-fra.com

Laravel preg_match (): aucun délimiteur de fin '/' trouvé

Im travaillant sur Laravel 4.2. Im essayant d'utiliser Validator pour valider un champ de nom avec regex, voici ma règle ci-dessous:

 public static $rules_save = [

        'class_subjects' => 'required|regex:/[0-9]([0-9]|-(?!-))+/'
    ];

Mais dès que j'appelle la règle à valider, une erreur est levée, voir ci-dessous:

preg_match(): No ending delimiter '/' found
26
Arlind

Étant donné que votre expression régulière contient un tuyau, vous devez utiliser un tableau:

public static $rules_save = [
    'class_subjects' => ['required', 'regex:/[0-9]([0-9]|-(?!-))+/'],
];

De les docs :

Lorsque vous utilisez le modèle regex, il peut être nécessaire de spécifier des règles dans un tableau au lieu d'utiliser des délimiteurs de canal, surtout si l'expression régulière contient un caractère de canal.

77
Joseph Silber