Пробел перед необязательной группой по-прежнему обязателен, поэтому у вас нет совпадения со второй строкой.
Поместите пробел в группу:
/(\w+)( [^,]+)?, ([0-9]{4})( (?:0[1-9]|1[0-2]):[0-9]{2} (?:am|pm))?/
^
См. regex demo .
Примечание. Я также считаю, что [^.]+
должно быть [^,]+
, любые 1 или более символов, кроме запятой .
Вы можете дополнительно сократить шаблон до
/(\w+)( [^,]+)?, (\d{4})( (?:0[1-9]|1[0-2]):\d{2} [ap]m)?/
Обратите внимание, что было бы неплохо заменить буквенные пробелы на \s+
для соответствия любому пробелу 1+ и не беспокоиться о наличии жестких или обычных пробелов во входных данных:
/(\w+)(\s+[^,]+)?,\s+(\d{4})(\s+(?:0[1-9]|1[0-2]):\d{2}\s+[ap]m)?/