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。私はこれに 1 時間苦労してきましたが、経験豊富な助けを借りる時が来たと考えました。

4

2 に答える 2

2

これを試して:

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

^(?!.*ipad).*(iphone|iPod)ティムからの提案は完全にうまく機能します。ただし、次の例と比較して、正規表現には 400% の CPU 要件があります。

1) 作業を 2 つの個別の正規表現に分割する

正規表現 A)(iphone|ipod)

正規表現 B)(ipad)

2)スクリプトで、ニーズに合わせて A と B の結果のいくつかの条件を実行します。

これは冗長で余分な作業のように思えるかもしれませんが、すべてを 1 つの正規表現に詰め込むよりも 400% 高速です。

于 2013-09-03T19:23:30.230 に答える