0

私は文字列を持っています:

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

3.5.2文字列内の他のバージョンではなく、Firefoxバージョンからのみ返されるようにします。ブラウザがFirefoxであることはすでに知っています。

4

5 に答える 5

3
/(?<=Firefox\/)\d+(?:\.\d+)+/

一致全体として3.5.2を返します(ルックビハインドを使用-現在ほとんどのブラウザーでサポートされています)。

JavaScriptエンジンがまだこれをサポートしていない場合(2022年2月のSafariを参照)、一致番号を検索し/Firefox\/(\d+(?:\.\d+)+)/て使用します。1.1。

理論的には複数の数字が存在する可能性があるため(たとえば、バージョン3.10.0)、正規表現のその部分も変更して、各番号に1つ以上の数字を使用できるようにしました。

于 2009-08-10T06:47:25.617 に答える
2
Firefox\/(\d+(?:\.\d+)+)

(上記の…<code>で行ったように、数字の周りにキャプチャグループを作成します。次に、必要な正規表現は、返される配列の2番目のインデックスになります。たとえば、ゼロベースのリストを持つ言語の場合、、matchedArray[1]および1ベースのリストを持つ言語の場合、matchedArray[2]

于 2009-08-10T06:37:48.290 に答える
1
Firefox\/(\d+(?:\.\d+)+)

一致#1を抽出します。ただし、これは(JavaScriptが疑われるが、指定されていない)正規表現エンジンで実行されます。または、これを行うのが非常に面倒で、正規表現エンジンが後読みをサポートしている場合:

(?<=Firefox\/)\d+(?:\.\d+)+
于 2009-08-10T06:36:54.033 に答える
1
Firefox\/(\d+(?:\.\d+)+)

あなたの言語に応じて(私はJSを想定しています)、それは配列の2番目の要素になります。

const regex = /Firefox\/(\d+(?:\.\d+)+)/;
const matches = useragent.match(regex);

console.log(matches[1]); // "3.5.2"
于 2009-08-10T06:36:56.387 に答える
1

ユーザーエージェントに文字が含まれている場合もあります。例:

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]+) 

2〜3レベルおよび10を超える番号のバージョン番号と一致しますが、2番目または3番目のレベルの文字も許可されます。

于 2011-01-08T08:53:03.377 に答える