匹配原生safari的userAgent的正则?

发布于 2022-09-02 20:24:29 字数 91 浏览 26 评论 0

想要分析nginx日志里边ios原生浏览器的来访量
可是现在很多浏览器useragent信息里边都包含了safari字符串,有没有正则能匹配原生safari的呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

笔落惊风雨 2022-09-09 20:24:29

匹配规则:拥有Safari字段,并且没有Chrome字段。

【常规的写法】

/Safari/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent);

【正则前瞻】

也可以利用正则前瞻浓缩成一条语句
/^(?=.Safari)(?!.Chrome)/.test(navigator.userAgent);
其中^是指:只在开头进行一次断言判断。
(?=.Safari)是指进行断言的部分包含.Safari字段
(?!.Chrome)是指断言判断部分没有.Chrome字段

【navigator.vendor字段】

另外还可以利用navigator.vendor字段来判断是否是Safari浏览器。
/Apple/.test(navigator.vendor)
navigator.vendor字段是描述浏览器提供商的字段。在Safari下为Apple。
但是这个字段仅仅适合判断是否是Safari,而且仅适合在PC上判断。
图片描述

备注

PC端只有Chrome有Safari字段吗?为什么不需要判断其他浏览器?

其实360,QQ等浏览器的userAgent字段也会带有Safari字段,但是由于他们基于Chrome二次开发的,所有也会携带有Chrome字段。
所以「匹配规则:拥有Safari字段,并且没有Chrome字段」就可以了。

为什么Chrome浏览器的userAgent会有Safari字段?

具体请参考Litten大神的文章
看完你还会知道为什么浏览器的userAgent都带有Mozilla标示。

为什么navigator.vendor字段仅仅适合判断是否是Safari,用于区分Chrome不行吗?

因为PC上基于Chrome进行二次开发的浏览器较多,其vendor字段均为Google,无法唯一判断是否为Chrome浏览器。
但是PC端几乎没有基于Safari开发的浏览器,所以可以唯一判断。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文