I have the following code in my Laravel 5 app:
public function store(Request $request){
$this->validate($request,
Might be easiest to use the built in alpha-numeric validation:
https://laravel.com/docs/5.2/validation#rule-alpha-num
$validator = Validator::make($request->all(), [
'filename' => 'alpha_num',
]);
You need to make sure the pattern matches the whole input string. Also, the alphanumeric and an underscore symbols can be matched with \w
, so the regex itself can be considerably shortened.
I suggest:
'regex:/^[\w-]*$/'
Details:
^
- start of string[\w-]*
- zero or more word chars from the [a-zA-Z0-9_]
range or -
s$
- end of string.Why is it better than 'alpha_dash'
: you can further customize this pattern.
use laravel rule,
public function store(Request $request){
$this->validate($request, ['filename' => 'alpha_dash']);
}
Laravel validation rule for alpha numeric,dashes and undescore
You forgot to quantify the regex, it also wasn't quite properly formed.
public function store(Request $request){
$this->validate($request, ['filename' => 'regex:/^[a-zA-Z0-9_\-]*$/']);
}
This will accept empty filenames; if you want to accept non-empty only change the *
to +
.