2012-09-24 7 views
7

Duplicar posible:
What is the iOS 6 user agent string?¿Cómo detectar iOS 6 y todas las versiones menores por agente de usuario?

tiene anybode ideas para hacer esto con una expresión regular simple o algo? Sería bueno distinguir entre el iPhone y el iPad también.

Cualquier ayuda en la construcción de algunas expresiones regulares se agradece :)

EDIT: User Agent Cuerdas: What is the iOS 6 user agent string? Esta pregunta se diferencia de la posible duplicado ya que quería ayuda en la construcción de una expresión regular en base a la información que ya sé (que se pueden encontrar en el posible duplicado)

+0

¿Está buscando cualquier agente de usuario iOS 6 arbitrario, o simplemente Safari? – BoltClock

+0

Lo ideal es que todos los agentes de usuario posibles, pero como Safari es el más común, creo que puede ser un punto de inicio :) – dasheddot

+2

Solo para señalar, los agentes de usuario son fácilmente falsificables. – Arran

Respuesta

26

CHANGELOG '

20/01/2017

  • UA cadenas de actualización: 141 coincidente, 0 parcialmente coincidente y 797 líneas no válidas

  • "Mobile Safari 1.1.3 (iPhone U; CPU como Mac OS X; en)" se considera no válida incluso si se menciona iPhone. En realidad, un punto y coma falta después del término iPhone que es sospechoso.

  • Safari 8+ todavía no aparece en UserAgentString.com

PRERREQUISITOS

  • La siguiente expresión regular es genérico.
  • será Matc h Secuencias de agente de usuario de Safari (SUAS) que se ejecutan en un dispositivo móvil (consulte la lista de dispositivos admitidos a continuación).
  • La expresión regular se basa en SUAS conocidos por UserAgentString.com a partir de 20/01/2017.

de 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+)*.*)?$ 

dispositivos soportados LISTA

  • iPhone
  • simulador de iPhone
  • iPad
  • iPod

EXPLICACIÓN/CUSTOMIZACIÓN

líneas precedidas de un C se puede personalizar.

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+)*.*)?$ 

cadenas de la línea 1. UA pueden diferir por lo que esta línea se introduce para aceptar cadenas UA tanto como sea posible.
línea 2. Puede especificar aquí la lista de dispositivos aceptados interconectados.
(...)
línea 7. La versión se indica aquí. Cambia esta línea si quieres una versión especial. No se olvide de actualizar línea 13 también. Por ejemplo, al hacer coincidir iOS 5.x.y, use (?:OS\s*5_\d+_\d+\s*)?.
línea 8. Algunas cadenas de agente de usuario están traducidas. La palabra like se puede traducir a un idioma extranjero. La expresión regular ahora admite English y French. Adapte esta línea si encuentra otros idiomas. No se olvide de actualizar línea 12 también.
(...)
línea 12. Ver línea 8.
línea 13. Ver línea 7. Por ejemplo, a juego iOS 5.x.y uso (?:Version/5\.\d+\.\d+)?\s*)?.

+0

¡¡Genial !!Muchas gracias por esta respuesta de alta calidad sobre mi pregunta no tan de alta calidad;) Upvoted y marcado como solución. ¡Gracias! – dasheddot

+0

¡De nada! – Stephan

+3

http://regexr.com?32el3 –

Cuestiones relacionadas