正規表現のブラウザのバージョンが一致し
-
12-09-2019 - |
質問
私は、文字列を持っています:
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729)
私は、文字列(3.5.2)であるのFirefoxのバージョンを知りたい。
私の現在の正規表現があります:
Firefox\/[0-9]\.[0-9]\.[0-9]
と、それはFirefox/3.5.2
を返します。
私はそれがFirefoxのバージョンではなく、文字列内の他のバージョンから3.5.2
を返すようにしたいです。私はすでに、ブラウザは、Firefoxで知っています。
解決
(?<=Firefox/)\d+(?:\.\d+)+
は、( - しかし、すべての正規表現のフレーバーで利用できない、特にJavaScriptの後読みを使用して)マッチ全体として3.5.2を返します。
だから、それは、JavaScriptのことFirefox/(\d+(?:\.\d+)+)
を検索し、一致を使用する必要がある場合。 1。
、私はまた、各番号に1つの以上の数字を考慮して、正規表現の一部を変更しました。また、スラッシュをエスケープする必要はありません。
他のヒント
Firefox\/([0-9]\.[0-9]\.[0-9])
私は上記のように行っている。()数字の周りのキャプチャグループを作成します。そして、あなたがしたい正規表現が返される配列内の2番目のインデックスになります。例えば、ゼロベースの言語matchedArray [1]又は1つのベースの言語そのmatchedArray [2]
Firefox\/([0-9]\.[0-9]\.[0-9])
正規表現エンジン(1ではJavaScriptを疑うものの、未指定)とマッチ#1を抽出し、しかし、これはあなたの中で行われています。それとも、これを行うのは非常に迷惑である場合、そしてあなたの正規表現は、後読みサポートしています:
(?<=Firefox\/)[0-9]\.[0-9]\.[0-9]
Firefox\/([0-9]\.[0-9]\.[0-9])
これは、配列の2番目の要素になるだろう(私はjsファイルを仮定している)あなたの言語に応じて、
すなわちます。
var regex = /Firefox\/([0-9]\.[0-9]\.[0-9])/
var matches = useragent.match(regex);
alert(matches[1]); // 3.5.2
時々、ユーザーエージェントはまた例えば、文字が含まれています。
Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:2.0b9pre) Gecko/20101228 Firefox/4.0b9pre
Internet Explorerは、私はバージョン情報の一部として、文字を見てきた唯一のブラウザです。
Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 6.0 ; .NET CLR 2.0.50215; SL Commerce Client v1.0; Tablet PC 2.0
また、このような2つだけバージョンの数字とFirefoxのユーザーエージェント文字列があることができます:
Mozilla/5.0 (X11; U; Linux armv7l; en-US; rv:1.9.2a1pre) Gecko/20091127 Firefox/3.5 Maemo Browser 1.5.6 RX-51 N900
私はこの正規表現パターンを思い付いたことに基づいて、
Firefox\/([\d]+\.[\w]?\.?[\w]+)
これは> 10 2-3レベルと数字で任意のバージョン番号と一致するだけでなく、第2または第3レベルの文字を許可します。