web-dev-qa-db-ja.com

Laravel preg_match():終了区切り文字 '/'が見つかりません

Laravel 4.2。Validatorを使用して正規表現で名前フィールドを検証しようとしています。

 public static $rules_save = [

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

ただし、検証するルールを呼び出すとすぐにエラーがスローされます。以下を参照してください。

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

正規表現にはパイプが含まれているため、配列を使用する必要があります。

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

ドキュメント から:

regexパターンを使用する場合、特に正規表現にパイプ文字が含まれる場合は、パイプ区切り文字を使用する代わりに配列でルールを指定する必要があります。

77
Joseph Silber