【问题标题】:With userAgent.match(), what does the "/i" mean at the end?使用 userAgent.match(),最后的“/i”是什么意思?
【发布时间】:2016-01-19 16:02:07
【问题描述】:

可以在以下位置找到示例:

JavaScript how to check User Agent for Mobile/Tablet

Detecting a mobile browser

对于我正在处理的问题,我不会使用 Javascript 来检测用户代理,因此答案不会直接影响我的问题。但是,在搜索正确的用户代理时,我一直看到“/iPad/i”、“/iPhone/i”、“/Android/i”等。 “/iPad”后面的“/i”是什么意思?它只是一个正则表达式,并告诉Javascript函数不区分大小写吗?

我尝试使用谷歌搜索 userAgent.match() 以获取有关函数本身的更多信息,并查看它接受哪些参数,但我没有运气。

详细说明:我读过一些网站说用户代理嗅探是坏消息,所以如果你想知道我为什么要嗅探用户代理,那就是编译一个电子邮件地址列表。 Mac 使用逗号,Windows 使用分号。我最近意识到 iOS 也使用逗号,所以我的程序在 iPad 上崩溃了。所以,我需要更新我的用户代理嗅探代码。

【问题讨论】:

  • 忽略字母大小写,因此Aa 被视为相等。是的,它“只是一个正则表达式”。
  • 谢谢!如果您想将其作为答案,我会将其标记为正确。
  • @epascarello 谢谢,我会把它添加到我的阅读列表中。

标签: javascript agent


【解决方案1】:

不区分大小写

所以"/iPhone/i" 将与iphoneIPHONEIpHOne 匹配

【讨论】:

    【解决方案2】:

    您可以通过 2 种方式将正则表达式传递给 match,或者通过创建 RegExp 对象的新实例:

    var re = new RegExp('pattenToMatch', 'i');
    string.match(re);
    

    或使用上面提到的速记 - 请注意速记正则表达式周围没有双引号:

    string.match(/iPhone/i);
    

    在第一个示例中,第二个参数将包含任何标志 - 例如,i 表示不区分大小写,g 表示全局。在第二个示例中,任何标志都包含在最后一个斜杠之后。

    【讨论】:

    • 似乎没有任何区别,除了速记是少打字。第二个例子不允许多个标志吗?
    • 第一个示例允许您将变量用作正则表达式的一部分。例如 var re = new RegExp('\S+' + 变量 + '\S+', 'g');您无法使用速记方式实现此目的。
    • 啊,有道理,感谢您的澄清!
    猜你喜欢
    • 1970-01-01
    • 2014-01-12
    • 2015-10-08
    • 2014-05-06
    • 1970-01-01
    • 1970-01-01
    • 2020-05-24
    • 2021-05-27
    • 1970-01-01
    相关资源
    最近更新 更多