1

我正在尝试过滤 user_agent 并区分 iPhone 和 iPad。用户代理字符串读取:

Mozilla/5.0(ipad U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B314 Safari/531.21.10

我现在使用的正则表达式是

(iphone|iPod|blackberry|android|windows+ce)

这让我得到了大多数移动设备,客户对此很满意。

如果字符串包含ipad. 我已经为此苦苦挣扎了一个小时,并认为是时候寻求一些更有经验的帮助了。

4

2 回答 2

2

尝试这个:

^(?!.*ipad).*(iphone|iPod|blackberry|android|windows\+ce)
于 2012-09-14T15:29:58.813 回答
0

^(?!.*ipad).*(iphone|iPod)蒂姆的建议效果很好。但是,与以下相比,正则表达式具有 400% 的 cpu 要求:

1)将工作拆分为两个单独的正则表达式

正则表达式 A)(iphone|ipod)

正则表达式 B)(ipad)

2)在你的脚本中做一些 A 和 B 结果的条件来满足你的需要。

这似乎是多余的额外工作,但比将所有内容都塞进一个正则表达式要快 400%。

于 2013-09-03T19:23:30.230 回答