Как обнаружить iOS 6 и все младшие версии с помощью пользовательского агента?

Возможный дубликат:
Что такое строка пользовательского агента iOS 6?

Есть ли идеи anybode для этого с помощью простого регулярного выражения или чего-то еще? Было бы хорошо различать между iphone и ipad.

Любая помощь в создании некоторых регулярных выражений оценивается:)

EDIT: Строки User Agent: Что такое строка пользовательского агента iOS 6? Эти вопросы отличаются от возможного дубликата, поскольку мне нужна помощь в создании регулярного выражения на основе информации, которую я уже знаю (которая может быть найдена в возможном дубликате)

Ответ 1

CHANGELOG

20/01/2017

  • Обновление строк UA: совпадение 141, неполное совпадение и 797 недопустимых строк

  • "Mobile Safari 1.1.3 (iPhone U, CPU, такой как Mac OS X; ru)" считается недействительным, даже если он упоминает iPhone. Фактически, после термина iPhone отсутствует подозрительная точка с запятой.

  • Safari 8+ пока не отображается на UserAgentString.com

ПРЕДПОСЫЛКИ

  • Следующее регулярное выражение является общим.
  • Он будет соответствовать строкам пользовательских агентов Safari (SUAS), запущенным на мобильном устройстве (см. ниже список поддерживаемых устройств).
  • Регулярное выражение основано на известных SUAS UserAgentString.com от 20/01/2017.

REGEX

^(?:(?:(?:Mozilla/\d\.\d\s*\()+|Mobile\s*Safari\s*\d+(?:\.\d+)+\s*)(?:iPhone(?:\s+Simulator)?|iPad|iPod);\s*(?:U;\s*)?(?:[a-z]+(?:-[a-z]+)?;\s*)?CPU\s*(?:iPhone\s*)?(?:OS\s*\d+_\d+(?:_\d+)?\s*)?(?:like|comme)\s*Mac\s*O?S?\s*X(?:;\s*[a-z]+(?:-[a-z]+)?)?\)\s*)?(?:AppleWebKit/\d+(?:\.\d+(?:\.\d+)?|\s*\+)?\s*)?(?:\(KHTML,\s*(?:like|comme)\s*Gecko\s*\)\s*)?(?:(?:Version|CriOS)/\d+(?:\.\d+)+\s*)?(?:Mobile/\w+\s*)?(?:Safari/\d+(?:\.\d+)*.*)?$

СПИСОК ПОДДЕРЖАННЫХ УСТРОЙСТВ

  • iPhone
  • iPhone Simulator
  • IPad
  • IPOD

ОБЪЯСНЕНИЕ/НАСТРОЙКА

Линии, которым предшествует C, могут быть настроены.

  1. ^(?:(?:(?:Mozilla/\d\.\d\s*\()+|Mobile\s*Safari\s*\d+(?:\.\d+)+\s*)
C 2.     (?:iPhone(?:\s+Simulator)?|iPad|iPod);\s*
  3.     (?:U;\s*)?
  4.     (?:[a-z]+(?:-[a-z]+)?;\s*)?
  5.     CPU\s*
  6.          (?:iPhone\s*)?
C 7.          (?:OS\s*\d+_\d+(?:_\d+)?\s*)?
C 8.          (?:like|comme)\s*Mac\s*O?S?\s*X
  9.      (?:;\s*[a-z]+(?:-[a-z]+)?)?
  10. \)\s*)?
  11. (?:AppleWebKit/\d+(?:\.\d+(?:\.\d+)?|\s*\+)?\s*)?
C 12. (?:\(KHTML,\s*(?:like|comme)\s*Gecko\s*\)\s*)?
C 13. (?:(?:Version|CriOS)/\d+(?:\.\d+)+\s*)?
  14. (?:Mobile/\w+\s*)?
  15. (?:Safari/\d+(?:\.\d+)*.*)?$

строка 1. Строки UA могут отличаться, поэтому эта строка вводится для максимально возможного принятия строк UA.
строка 2.. Здесь можно указать список принятых устройств, разделенных каналами.
(...)
строка 7. Здесь указывается версия. Измените эту строку, если вы хотите использовать специальную версию. Не забудьте также обновить строку 13. Например, сопоставление iOS 5.x.y использует (?:OS\s*5_\d+_\d+\s*)?.
строка 8. Некоторые строки пользовательского агента переводятся. Слово like может быть переведено на иностранный язык. Регулярное выражение теперь поддерживает English и French. Адаптируйте эту строку, если вы сталкиваетесь с другими языками. Не забудьте обновить строку line 12.
(...)
строка 12. См. строка 8.
строка 13. См. строка 7. Например, сопоставление iOS 5.x.y использует (?:Version/5\.\d+\.\d+)?\s*)?.