2016-07-28 17 views
2

Ich habe den folgenden Code in meinem Laravel 5 App:Validate nur alphanumerische Zeichen in Laravel

public function store(Request $request){ 
    $this->validate($request, ['filename' => 'regex:[a-zA-Z0-9_\-]']); 
} 

Meine Absichten sind Dateinamen mit nur alphanumerische Zeichen, Bindestriche zu ermöglichen, und unterstreicht in ihnen. Allerdings funktioniert meine Regex nicht, es scheitert sogar an einem einzelnen Buchstaben. Was mache ich falsch?

+0

Versuchen Sie ''regex:/^ [a-zA-Z0-9 _-] * $ /'' oder nur ''regex:/^ [\ w -] * $ /''. –

+0

@ WiktorStribiżew Es funktioniert! Danke, aber was war mein Fehler? –

+1

Der Punkt ist, dass die ganze Zeichenfolge übereinstimmen sollte. –

Antwort

3

Sie müssen das Muster, um sicherzustellen, die gesamte Eingabezeichenfolge übereinstimmt. Außerdem können die alphanumerischen Zeichen und die Unterstreichungssymbole mit \w abgeglichen werden, so dass die Regex selbst erheblich verkürzt werden kann.

Ich schlage vor:

'regex:/^[\w-]*$/' 

Einzelheiten:

  • ^ - Beginn der Zeichenfolge
  • [\w-]* - null oder mehr Wort Zeichen aus dem [a-zA-Z0-9_] Bereich oder - s
  • $ - Ende der Str Ing.

Warum ist es besser als 'alpha_dash': Sie dieses Muster weiter anpassen können.

+0

Danke, das ist die vollständigste Antwort von allen sogar mit' alpha_dash' erwähnt! –

+0

nett, und wie mache ich es in die Anfrage? –

2

könnte am einfachsten, die in alphanumerischer Validierung gebaut zu verwenden:

https://laravel.com/docs/5.2/validation#rule-alpha-num 

$validator = Validator::make($request->all(), [ 
    'filename' => 'alpha_num', 
]); 
+0

Danke! es ist tatsächlich 'alpha_dash' –

1

Sie haben vergessen, die Regex zu quantifizieren, war es auch nicht ganz richtig gebildet.

public function store(Request $request){ 
    $this->validate($request, ['filename' => 'regex:/^[a-zA-Z0-9_\-]*$/']); 
} 

Dies akzeptiert leere Dateinamen; Wenn Sie nur nicht leer akzeptieren möchten, ändern Sie die * in +.

3

Verwendung Laravel Regel

public function store(Request $request){ 
    $this->validate($request, ['filename' => 'alpha_dash']); 
} 

Laravel validation rule for alpha numeric,dashes and undescore

+0

Danke! es ist tatsächlich 'alpha_dash' –

+0

sorry, ich habe das richtige verknüpft, aber das falsche hinzugefügt, trotzdem habe ich den Code oben geändert .. –

Verwandte Themen