Я хочу, чтобы мой шаблон регулярного выражения просто разрешал электронные письма из Борнмута с > доменом ac.uk И электронные письма от nhs с > .net или .uk Однако мне трудно заставить это работать, я попытался добавить разделитель в регулярное выражение, и он не работает, и попытался удалить «i», но это необходимо.
Регулярное выражение: 'email' => ['required', 'string', 'email', 'max:255', 'regex:/(.*)@(bournemouth)\.ac.uk/i | @(nhs)\.net|uk/i', 'unique:users'],






я предлагаю использовать
'regex:/.*@(?:bournemouth\.ac\.uk|nhs\.(?:net|uk))/i'
Или
'regex:/@(?:bournemouth\.ac\.uk|nhs\.(?:net|uk))/i'
Подробности
@ - @ символ(?:bournemouth\.ac\.uk|nhs\.(?:net|uk)) - групповое сопоставление без захвата
bournemouth\.ac\.uk - строка bournemouth.ac.uk| - илиnhs\.(?:net|uk) - nhs., за которым следует либо net, либо uk.Обратите внимание, что буквенные точки экранированы, внутри шаблона между альтернативами нет пробелов, а флаг i устанавливается только в конце регулярного выражения.
Хорошо, ладно, гораздо понятнее, спасибо, что разобрали, я совершенно перегружен этими регулярными выражениями.
Попробуйте
'regex:/.*@(?:bournemouth\.ac\.uk|nhs\.(?:net|uk))/i'или просто'regex:/@(?:bournemouth\.ac\.uk|nhs\.(?:net|uk))/i'