当前位置: 首页 > article >正文

Java判断请求是来自手机端还是PC端

public class BrowserUtils {

    // \b 是单词边界(连着的两个(字母字符 与 非字母字符) 之间的逻辑上的间隔),
    // 字符串在编译时会被转码一次,所以是 "\\b"
    // \B 是单词内部逻辑间隔(连着的两个字母字符之间的逻辑上的间隔)
    private static final String phoneReg = "\\b(ip(hone|od)|android|opera m(ob|in)i"
            +"|windows (phone|ce)|blackberry"
            +"|s(ymbian|eries60|amsung)|p(laybook|alm|rofile/midp"
            +"|laystation portable)|nokia|fennec|htc[-_]"
            +"|mobile|up.browser|[1-4][0-9]{2}x[1-4][0-9]{2})\\b";

    private static final String tabletReg = "\\b(ipad|tablet|(Nexus 7)|up.browser|[1-4][0-9]{2}x[1-4][0-9]{2})\\b";

    //移动设备正则匹配:手机端、平板
    private static final Pattern phonePat = Pattern.compile(phoneReg, Pattern.CASE_INSENSITIVE);
    private static final Pattern tabletPat = Pattern.compile(tabletReg, Pattern.CASE_INSENSITIVE);

    /**
     * 检测是否是移动设备访问
     *
     * @param userAgent 浏览器标识
     * @return true:移动设备接入,false:pc端接入
     */
    public static boolean isMobile(String userAgent){
        if(null == userAgent){
            userAgent = "";
        }
        return phonePat.matcher(userAgent).find() || tabletPat.matcher(userAgent).find();
    }
}

http://www.kler.cn/a/6675.html

相关文章:

  • uniapp 微信小程序 editor 富文本编辑器
  • 【Pytorch实用教程】TCN(Temporal Convolutional Network,时序卷积网络)简介
  • Titans 架构中的记忆整合:Memory as a Context;Gated Memory;Memory as a Layer
  • 迅为RK3576开发板Android 多屏显示
  • 测试工程师的linux 命令学习(持续更新中)
  • 交直流混合微电网多台互联变换器并联
  • select @@basedir;
  • pytorch中torch.cat() 和paddle中的paddle.concat()函数用法
  • CAD命令行怎么恢复到初始状态?CAD命令行窗口恢复步骤
  • IDEA 2023.1 正式发布,新特性简介
  • 【MySQL高级篇】 第10章_索引优化与查询优化
  • 【面试】业务中台是什么?
  • 3C认证是什么意思
  • 一刷代码随想录总结
  • 【ssl认证、证书】Wireshark抓包分析
  • Android系统启动过程小结
  • ChatGPT惨遭围剿?多国封杀、近万人联名抵制……
  • 【Unity编辑器扩展】语言国际化工具,生成多语言Excel自动翻译并导出多语言表
  • 如何使用LaTeX中的命令【博文生成:ChatGPT 3.5】
  • SpringBoot - 集成RestTemplate模板(二) - GET请求
  • 如何恢复回收站被清空的文件
  • Troubleshooting 专题 - 问正确的问题 得到正确的答案
  • fastDDS之Domain
  • 聊聊MyBatis缓存机制(一)
  • java this
  • 【数据结构篇C++实现】- 哈希表