Я бы хотел помочь. У меня есть поле ввода, где я бы хотел проверить, записал ли пользователь дату его рождения в следующих форматах: dd/mm/yyyy
или dd-mm-yyyy
if(preg_match('/^[0-9]{2}-[0-9]{2}-[0-9]{4}$/', $_POST['dob'])){
// ok
} else {
// there an error
}
Как я могу изменить свое регулярное выражение, чтобы соответствовать '/'
или '-'
между цифрами?
Поместите шаблоны, которые соответствуют форматам дат внутри группы, не связанной с захватом, ограниченной оператором чередования.
if(preg_match('~^[0-9]{2}(?:-[0-9]{2}-[0-9]{4}|/[0-9]{2}/[0-9]{4})$~', $_POST['dob'])){
// ok
} else {
// there an error
}
ИЛИ
Используйте группу захвата, а затем передайте символы захвата с помощью обратных ссылок.
if(preg_match('~^[0-9]{2}([-/])[0-9]{2}\1[0-9]{4}$~', $_POST['dob'])){
// ok
} else {
// there an error
}
preg_split('~[/-]~', $dob)