Регламент проверки заголовка HTTP Accept-Language

Я пытаюсь проверить значения заголовка HTTP Accept-Language, используя PCRE регулярное выражение и я придумал это регулярное выражение:

(?i:(?:\*|[a-z\-]{2,5})(?:;q=\d\.\d)?,)+(?:\*|[a-z\-]{2,5})(?:;q=\d\.\d)?

Два примера значений заголовка Accept-Language:

fr-CH,fr;q=0.9,en;q=0.8,de;q=0.7,*;q=0.5  

en-US,en;q=0.9

Есть ли более оптимизированное регулярное выражение для этого?

1 ответ

Решение

В смысле короче было бы регулярное выражение для замены с использованием групп захвата и рекурсий:

(?i)((?:\*|[a-z-]{2,5})(?:;q=\d\.\d)?)(?:,(?1))*
Другие вопросы по тегам