1

次のドキュメントに従って: https://developers.google.com/chrome/mobile/docs/user-agent

Chrome for iOS UA 文字列は次のとおりです。

Mozilla/5.0 (iPhone; U; CPU iPhone OS 5_1_1 like Mac OS X; en) AppleWebKit/534.46.0 (KHTML, like Gecko) CriOS/19.0.1084.60 Mobile/9B206 Safari/7534.48.3

iOS UA 文字列の Safari は次のとおりです。

Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543 Safari/419.3

今後の違いは、Chrome に「CriOS」が含まれていることです。これら 2 つのブラウザーを区別できるようにしたいので、正規表現を使用してそれを行うことにしました。

使用:

/Gecko\) (?!CriOS)/

私はそれを行うことができますが、式にiPhoneを含めていないため、妄想的です(おそらく、これはAndroidなどでもトリガーされます).

次の場合に一致を返す次の正規表現を書きたいと思います。

  1. 文字列に「iPhone」が含まれています
  2. 文字列に「CriOS」が含まれていません

どうすればそれを行うことができますか?

参考までに、reg exp のテストに rubular を使用してきました。これはすばらしいhttp://rubular.com/

4

2 に答える 2

7

これはそれを行う必要があります:

iPhone(?!.*?CriOS)

iPhoneその単語のすべての出現に一致します。次に、一致からの否定的な先読みを使用しiPhoneます。.*?CriOSが見つかるまで任意/すべての文字に一致しますCriOS。は(?!expr)否定的な先読みです。式が false の場合、その前にあるもの ( Iphone) が一致します。それ以外の場合は一致しません。

于 2012-07-17T18:16:32.930 に答える
1

iPhone Safari 文字列の詳細については、次を試してください。

'Mozilla/(\d+(?:\.?\d+)*) \(([\w\s\;]+?)\) AppleWebKit/(\d+(?:.?\d+)*) \([\w\s\,]*\) Version/(\d+(?:.?\d+)*) Safari/(\d+(?:.?\d+)*)'

Chromeの場合も明らかに適応できるようになりました...

于 2013-09-29T20:27:24.127 に答える