如何通过用户代理检测iOS 6和所有次要版本?

如何通过用户代理检测iOS 6和所有次要版本?,ios,regex,user-agent,ios6,Ios,Regex,User Agent,Ios6,如何通过用户代理用简单的正则表达式之类的东西检测iOS 6和所有次要版本?将iphone和ipad区分开来也很好 这个问题与其他问题不同,因为我需要帮助根据我已经知道的信息(可以在链接的问题中找到)构建正则表达式 20/01/2017 UA字符串更新:141个匹配、0个部分匹配和797个无效行 “Mobile Safari 1.1.3(iPhone U;类似Mac OS X的CPU)即使提到iPhone也被认为是无效的。实际上,iPhone术语后面缺少一个分号,这是可疑的 Safari

如何通过用户代理用简单的正则表达式之类的东西检测iOS 6和所有次要版本?将iphone和ipad区分开来也很好



这个问题与其他问题不同,因为我需要帮助根据我已经知道的信息(可以在链接的问题中找到)构建正则表达式

20/01/2017

  • UA字符串更新:141个匹配、0个部分匹配和797个无效行

  • “Mobile Safari 1.1.3(iPhone U;类似Mac OS X的CPU)即使提到iPhone也被认为是无效的。实际上,
    iPhone
    术语后面缺少一个分号,这是可疑的

  • Safari 8+尚未出现在UserAgentString.com上

先决条件

  • 下面的正则表达式是通用的
  • 它将匹配移动设备上运行的Safari用户代理字符串(SUA)(请参阅下面支持的设备列表)
  • 正则表达式基于截至2017年1月20日的已知SUA
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模拟器
  • iPad
  • iPod
解释/定制

可以自定义前面带有C的行

第1行。UA字符串可能不同,因此引入该行是为了尽可能多地接受UA字符串。
第2行。您可以在此处指定接受设备的管道分隔列表。
(…)
第7行。此处显示了版本。如果需要特殊版本,请更改此行。不要忘记更新第13行。例如,匹配iOS 5.x.y使用
(?:OS\s*5\ud+\ud+\s*)?

第8行。一些用户代理字符串被翻译。类似于的单词可以翻译成外语。regexp现在支持
英语
法语
。如果您遇到其他语言,请改编此行。不要忘记更新第12行。
(…)
第12行。第8行。

第13行。参见第7行。例如,匹配iOS 5.x.y使用
(?:Version/5\.\d+\.\d+.\s*)?

您是在寻找任意的iOS 6用户代理,还是仅仅是Safari?理想情况下是所有可能的用户代理,但由于Safari是最常见的,我认为它可能是一个起点:)我要指出,用户代理很容易被欺骗。谢谢你的提示,但是如果有人欺骗了他的用户代理,我不愿意为他提供非常酷的设备特定功能,所以就我的目的而言,这是可以的。它不是重复的,因为我想用我已经知道的信息(重复的问题就是这样问的)帮助构建一个正则表达式,真的很酷!!非常感谢您对我的质量不太高的问题给出了高质量的回答;)向上投票并标记为解决方案。谢谢@史蒂芬:Np,但事实上还有更多(见评论)。
  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+)*.*)?$