Регулярные выражения могут быть полезны для такого рода проверки.
Для проверки на стороне клиента :
function validateYoutubeURL(url){
var regex=/https?:\/\/youtu(be\.com|\.be)\/.+/;
return regex.test(url.toLowerCase());
}
И для проверка на стороне сервера :
public function store(Request $request){
$this->validate($request, [
'field_name'=> [
'required',
'regex:/https?:\/\/youtu(be\.com|\.be)\/.+/',
]
]);
}
Чтобы уведомить пользователя о неправильном URL, используйте это (проверка на стороне сервера):
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
Важно:
Примечание. При использовании шаблонов regex / not_regex может потребоваться указать правила в массиве, а не разделители каналов, особенно если регулярное выражение содержит символ канала.
Для третьей части вашего вопроса, пожалуйста, оставьте свой взгляд и контроллер.