使用正则表达式进行用户代理解析

2024-01-10

我在网上找到了一种在 iPhone 上查看 Ruby on Rails 应用程序时分离视图的方法,它会解析用户代理来检测这一点。我专门针对 iOS 4.2+,因为以前的版本不支持我的应用程序所需的 HTML5 Web Sockets。

到目前为止我正在解析/(iPhone.+OS.+4_2.+Safari)/它似乎很有效,但我遇到的问题是,如果您使用的是测试版或未来版本的操作系统,用户代理可能不包括4_2但它可能支持 Web Sockets。

我的问题是..我如何解析字符串以获得以下结果:

  • 如果有 4 或更大
  • (可选?)后面跟什么

我的正则表达式很糟糕,所以请原谅这个愚蠢的问题:-)

先谢谢了! 汤姆.


实际上不可能“可靠地”解析用户代理字符串;几个常见的用户代理字符串违反了 HTTP 1.1(我忘记了 RFC 编号)WRT 括号之间允许的字符(. 或 / 或 ; 或其他什么?)。当您想要将某些功能列入“白名单”时,用户代理嗅探非常脆弱,并会导致抱怨某些浏览器相对于其他浏览器的优惠待遇(特别是当微软这样做时),并且意味着有人必须保持巨大的正则表达式更新。

是否真的没有更好的方法(例如使用 JavaScript?)来检测浏览器支持的功能?

不过,你可以做类似的事情; *CPU +iPhone +OS +(4_(2|[3-9]|\d\d)|[5-9]|\d\d)\[0-9a-zA-Z_]* +like +Mac +OS +X *;.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用正则表达式进行用户代理解析 的相关文章

  • 正则表达式最多匹配五个单词

    我有一个正则表达式 a zA Z 0 9 1 5 它验证该单词包含字母数字字符和少数特殊字符 并且长度不应超过5人物 如何使此正则表达式接受最多五个与上述正则表达式匹配的单词 a zA Z 0 9 1 5 s a zA Z 0 9 1 5
  • UIScrollView - 启用分页后,我可以“更改”页面宽度吗?

    将滚动视图 将 pagingEnabled 设置为 YES 将页面宽度设置为滚动视图边界以外的其他值的最简单方法是什么 让我举个例子 假设我有一个包含 10 个项目的滚动视图 每个项目的宽度为 150 像素 而我的滚动视图的宽度为 300
  • 将html数据解析成python列表进行操作

    我正在尝试读取 html 网站并提取其数据 例如 我想查看公司过去 5 年的 EPS 每股收益 基本上 我可以读入它 并且可以使用 BeautifulSoup 或 html2text 创建一个巨大的文本块 然后我想搜索该文件 我一直在使用
  • 使用 MFMailComposeViewController 类从 iPhone 应用程序发送带有 IMG 标签的 HTML 电子邮件

    我正在使用 MFMailComposeViewController 类从我的 iPhone 应用程序发送格式化的 HTML 电子邮件 我需要在电子邮件中包含图像 并且我在电子邮件正文中添加了 IMG 标签 IBAction shareWit
  • 创建正则表达式匹配数组

    在Java中 我试图将所有正则表达式匹配返回到一个数组 但似乎您只能检查模式是否匹配某些内容 布尔值 如何使用正则表达式匹配来形成与给定字符串中的正则表达式匹配的所有字符串的数组 4城堡的回答 https stackoverflow com
  • 为什么 iPhone 上的纹理图像需要具有二维幂?

    我正在尝试解决 iPhone 上的闪烁问题 open gl es game 我有一些没有 2 维的图像 我将用具有适当尺寸的图像替换它们 但为什么尺寸需要是 2 的幂 大多数系统 甚至许多现代显卡 需要 2 的幂纹理的原因是 mipmap
  • PHP 正则表达式匹配字符串的最后一次出现

    我的字符串是 text1 A373R12345 我想找到该字符串最后出现的非数字数字 所以我使用这个正则表达式 0 9 然后我得到这个结果 1 A373 2 12345 但我的预期结果是 1 A373R 它有 R 2 12345 另一个例子
  • 在 swift3 中结合平移、alpha 和缩放动画

    我是 iOS Swift 开发的新手 我尝试将三个参数组合在一个动画中 但没有成功 我认为解决方案就在这里 Apple Dev Core 动画编程指南 https developer apple com library content do
  • Cocos2d - 将 GLImageProcessing 效果应用于 CCSprite

    苹果的oplenglGL图像处理 http developer apple com library ios samplecode GLImageProcessing Introduction Intro html加载图像并应用图像调整 亮度
  • MySQL正则表达式:如何将字符串中的数字与\d匹配?

    我有一个专栏release date它以字符串格式存储日期 不是 DATETIME 格式 因为它们有时可以是任何其他字符串文字 我想根据给定的月份和年份查找任意日期的所有记录 尝试遵循但对我不起作用 gt Post find all con
  • 检索 iPhone 中的 Outlook 联系人

    我想通过应用程序导入所有 Outlook 联系人 有什么办法可以做到这一点吗 请告诉我 您可以通过实施 Microsoft Exchange 服务器协议来实现此目的 微软MSDN http msdn microsoft com en us
  • 在不同的捆绑包上测试 iPhone 应用内购买?

    我们有一组 iPhone 应用程序的 Beta 测试人员 最近 我们在应用程序中添加了应用内购买功能 在此之前 我们会使用单独的捆绑 ID 和名称向 Beta 测试人员发送临时版本 以便他们可以在手机上拥有商店版本和临时版本 然而 似乎我们
  • 匹配所有有效格式 IPv6 地址的正则表达式

    乍一看 我承认这个问题看起来像是这个问题以及与之相关的任何其他问题的重复 匹配有效 IPv6 地址的正则表达式 https stackoverflow com questions 53497 regular expression that
  • java中删除字符串中的特殊字符?

    如何删除字符串中除 之外的特殊字符 现在我用 replaceAll w s 它删除了所有特殊字符 但我想保留 谁能告诉我我该怎么办 Use replaceAll w s 我所做的是将下划线和连字符添加到正则表达式中 我添加了一个 连字符之前
  • UIWebView 中的 PDF

    我正在创建一个杂志应用程序 我在 UIWebView 中显示杂志的每一页 不过 Web 视图不会用 PDF 填满屏幕 它周围有一个边界 我怎样才能全屏显示它 我还没有使用 UIWebView 尝试过此操作 但您也许可以执行类似的操作来以编程
  • 为什么 re.findall 在查找字符串中的三元组项时不具体。 Python

    所以我有四行代码 seq ATGGAAGTTGGATGAAAGTGGAGGTAAAGAGAAGACGTTTGA OR 0 re findall r ATG 9 TAA TAG TGA seq 首先让我解释一下我正在尝试做什么 如果这令人困惑
  • 如何用正则表达式替换多个匹配/组?

    通常我们会编写以下内容来替换一场比赛 namesRegex re compile r is life re I replaced namesRegex sub r butter There is no life in the void pr
  • 如何减少典型 iPhone 应用程序的启动时间?

    需要明确的是 这是一个普通的 iPhone 应用程序 而不是游戏 我在网上读过几次 一些开发人员提到他们正在努力改进 减少应用程序的启动时间 但从来没有提供任何关于如何做到这一点的良好背景信息 那么问题很简单 如何减少 iPhone 应用程
  • 正则表达式库基准

    我最近一直想知道正则表达式实现的性能 并且很难想出很多有用的信息 它很容易对浏览器 javascript 正则表达式性能进行基准测试 网上有很多工具 Chrome 和 Opera 中的 javascript 正则表达式实现几乎摧毁了所有其他
  • 如何在 iOS 中注册自定义文件类型

    我目前正在创建一个应用程序 我想让用户在其中备份他们的文件 plist m4a 我压缩文件并将扩展名更改为自定义扩展名 专门针对我的应用程序 例如 MyBackup 然后 用户可以通过电子邮件或 iTunes 文件共享进行导出 我已经阅读过

随机推荐

  • 后缀/前缀运算符优先级和结合性

    我很困惑优先级 and 关联性后缀 前缀运算符 一方面 当我正在阅读 K R 的书时 它指出 ip 在最后一个示例中 括号是必需的 如果没有它们 表达式将增加 ip 而不是它所指向的值 因为像 和 这样的一元运算符从右到左关联 没有提及后缀
  • 如何实现更通用的reduce函数以允许提前退出?

    reduce aka foldL FP 是 Javascript 中最通用的迭代高阶函数 例如 您可以实施map or filter按照reduce 我使用了命令式循环来更好地说明该算法 const foldL f gt acc gt xs
  • 在 React Native Expo 应用程序中无需密钥即可解码 JWT 令牌

    我的应用程序当前正在博览会上运行 我需要一种方法来解码从后端收到的 JWT 令牌 当我使用jwt io它不需要密钥来解码 但我似乎找不到支持博览会的库不需要密钥来解码 我尝试使用下面的代码在没有库的情况下对其进行解码 但它不起作用 JSON
  • Matlab:如何从外部API调查编译后的m代码进度?

    我的问题非常具体于 matlab 编译器和运行时的奥秘 只有熟悉 matlab 运行时 API 的人才能回答 我缩短了很多细节 请让我知道我是否应该更详细 介绍 使用 matlab 编译器和运行时 我可以从 C 程序调用用 m 代码编写的函
  • Dagger 和 Butter Knife 与 Android 注释

    我正在评估 Android 应用程序的依赖注入 DI 框架 最有力的竞争者是 Dagger 带有黄油刀 和 Android Annotations 据我了解 Dagger 和 ButterKnife 是同源的 而且是相辅相成的 以下是我正在
  • 如何知道浏览器是否有PDF阅读器?

    我正在 iframe 中查看 PDF 效果很好 但有些客户端在 IE 中看不到它 他们将其作为下载选项 如何识别浏览器是否有pdf查看器并提示用户没有pdf查看器 注意 我使用的是 asp net mvc 5 c I tried this
  • Java中如何捕获异常并继续处理

    我有一个应用程序 在循环期间处理 5000 个文件到 6000 个文件 在 try and catch 块中 我正在读取 Excel 文件并处理每个单独的单元格 当然 所有文件都采用相同的格式 但在某些文件中 单元格中的数据可能会有所不同
  • 如何将对象数组转换为具有键值对的对象

    我想将对象数组转换为JavaScript中具有键值对的对象 var arr name1 value1 name2 value2 我怎样才能将它转换为一个对象 例如 name1 value1 name2 value2 我希望大多数浏览器都支持
  • Tomcat JDBC MySQL ClassNotFoundException

    我想在我的 tomcat 7 服务器 在我的 Mac 上本地运行 上使用 springMVC 和 JPA 使用 hibernate 我能够使用嵌入式 H2 数据库成功设置一切 现在我切换到mysql并收到以下错误 java lang Cla
  • 魔法记录 - 在主线程块 ui 中获取,在后台返回 nil

    我是 Magical Record 的新手 但已经在 stackoverflow 上看到了一些问题 但找不到我的问题的答案 我必须使用这种类型的构造来查找带有谓词的项目 NSArray result MOSomeItems MR findA
  • Heroku 错误:页面已通过 HTTPS 加载,但请求了不安全的脚本“angular-route.js”

    我已经部署了我的nodejs app to heroku 我有下面这个文件作为我的index html但不知何故heroku向我抛出此错误消息到 chrome 开发者控制台 F12 Error 混合内容 页面位于 https small t
  • C#:在什么情况下应该清空引用?

    CLR Profiler 还可以揭示哪些方法分配的存储空间超出您的预期 并且可以发现您无意中保留对无用对象图的引用的情况 否则这些对象图可能会被 GC 回收 一个常见的问题设计模式是软件缓存或不再需要的项目的查找表 或者以后可以安全地重建
  • crosstools-ng 找不到 pthread.so

    我正在尝试使用 crosstools ng 编译使用 pthread 的程序 但是由于某种原因链接器找不到该库 我已经检查过 库位于指定的链接路径中 L是论据 这是错误 home raspberrypi toolchain lib gcc
  • 如何用数据存储而不是数据库来思考?

    例如 Google App Engine 使用 Google Datastore 而不是标准数据库 来存储数据 有人对使用 Google Datastore 而不是数据库有什么建议吗 看来我已经训练自己的思维 100 思考直接映射到表结构的
  • Google+ API:如何使用 RefreshTokens 避免每次应用程序启动时都请求访问权限?

    我正在尝试使用 Google API 来访问经过身份验证的用户的信息 我从其中一个示例中复制了一些代码 该代码运行良好 如下 但是我无法使其以跨应用程序启动重用令牌的方式运行 我尝试捕获 RefreshToken 属性并使用provider
  • Python 中均值和协方差的快速增量更新

    我有一个 Python 脚本 需要经常更新均值和协方差矩阵 我目前正在做的是 每次获得新数据点 x 向量 时 我都会重新计算平均值和协方差 如下所示 data append x My data is just a list of lists
  • 当命令行开关接受管道输入时,ByPropertyName 和 ByValue 之间有什么区别?

    一些 PowerShell commandlet 接受管道输入 ByProperyName 一些接受 ByValue 另一些则同时接受两者 这是什么意思 它如何影响我们的 PowerShell 脚本 The ValueFromPipelin
  • 从Java中的字符串中删除所有非“单词字符”,留下重音字符?

    显然 当我使用 Regex 时 Java 的 Regex 风格将变音符号和其他特殊字符计为非 单词字符 TEST TEST replaceAll W 为我返回 TESTTEST 我想要的是只删除所有真正的非 单词字符 任何方法都可以做到这一
  • 如何使用“?”路由查询字符串以及如何处理

    在我的全局 asax 文件中 我想映射如下所示的路线 http domain com add link url http 3A 2F 2Fgoogle com 然后使用我的 LinkController 和名为 Add 的操作来捕获它 我这
  • 使用正则表达式进行用户代理解析

    我在网上找到了一种在 iPhone 上查看 Ruby on Rails 应用程序时分离视图的方法 它会解析用户代理来检测这一点 我专门针对 iOS 4 2 因为以前的版本不支持我的应用程序所需的 HTML5 Web Sockets 到目前为