单纯依靠 URL 路径来判断移动端是不准确的。更可靠的方法是检查 User-Agent 字符串。以下是一个基于 User-Agent 的、兼容 Google RE2 的正则表达式,用于判断移动端:
(?i)(android|iphone|ipad|mobile|webos|blackberry|iemobile|opera mini|kindle|silk|midp|wap)
解释:
(?i)
: 不区分大小写匹配。(android|iphone|ipad|mobile|webos|blackberry|iemobile|opera mini|kindle|silk|midp|wap)
: 匹配括号中的任意一个关键词。这些关键词通常出现在移动设备的 User-Agent 字符串中。 除了之前的关键词,这里添加了 silk
(Amazon Silk 浏览器), midp
(一些老旧的功能手机), 和 wap
(移动应用协议) 以提高覆盖率。使用方法(示例 - PHP):
<?php
$userAgent = $_SERVER['HTTP_USER_AGENT'];
if (preg_match('/(?i)(android|iphone|ipad|mobile|webos|blackberry|iemobile|opera mini|kindle|silk|midp|wap)/', $userAgent)) {
echo "Mobile Device";
} else {
echo "Not a Mobile Device";
}
?>
重要提示:
这个正则表达式提供了一个基本的移动端检测方法,可以根据实际需求进行调整和扩展。