Frage

Ich habe eine Zeichenfolge:

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)

Ich möchte wissen, welche Version von Firefox in der Zeichenfolge ist (3.5.2).

Meine aktuelle Regex ist:

Firefox\/[0-9]\.[0-9]\.[0-9]

und es gibt Firefox/3.5.2

Ich will es nur 3.5.2 von der Firefox-Version zurückzukehren, nicht die anderen Versionen in der Zeichenkette. Ich weiß schon, der Browser Firefox.

War es hilfreich?

Lösung

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

wird 3.5.2 wie das gesamte Spiel zurückzukehren (mit Lookbehind - die in allen Regex-Varianten nicht verfügbar ist, aber vor allem JavaScript).

Also, wenn es hat Sie JavaScript, um die Suche nach Firefox/(\d+(?:\.\d+)+) zu sein und nicht verwenden lassen. 1.

Da in der Theorie könnte es mehr als eine Ziffer sein (sagt sie, Version 3.10.0), habe ich auch verändert, dass ein Teil der Regex, so dass für eine oder mehr Ziffern für jede Nummer. Auch gibt es keine Notwendigkeit, den Schrägstrich zu entkommen.

Andere Tipps

Firefox\/([0-9]\.[0-9]\.[0-9])

Erstellen Sie eine Capture-Gruppe um die Zahlen, wie ich oben getan haben, mit der (). Dann wird die regex Sie werden in der 2. Index im Array sein wollen, der zurückgegeben wird. z für Null basierte Sprachen matchedArray [1] und oder 1 basierte Sprachen seiner matchedArray [2]

Firefox\/([0-9]\.[0-9]\.[0-9])

und Match # 1 extrahieren, aber dies ist in Ihrer getan (nicht näher bezeichnet, obwohl man JavaScript vermutet) Regex-Engine. Oder, wenn dies ist sehr ärgerlich zu tun, und Ihre regex unterstützt Lookbehind:

(?<=Firefox\/)[0-9]\.[0-9]\.[0-9]

Firefox\/([0-9]\.[0-9]\.[0-9])

Je nach Sprache (ich gehe mal davon aus js) es wird das zweite Element in dem Array

d.


var regex = /Firefox\/([0-9]\.[0-9]\.[0-9])/
var matches = useragent.match(regex);
alert(matches[1]); // 3.5.2

Manchmal ist der User-Agent enthält auch Zeichen, z.

Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:2.0b9pre) Gecko/20101228 Firefox/4.0b9pre

Internet Explorer ist der einzige andere Browser, wo ich die Zeichen gesehen haben, als Teil der Versionsinformationen:

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

Auch kann es wie diese mit nur zwei Ziffern Version Firefox User-Agent-Strings sein:

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

Auf der Grundlage, dass ich mit diesem RegexMuster kam:

Firefox\/([\d]+\.[\w]?\.?[\w]+) 

Es wird eine beliebige Versionsnummer mit 2-3 Ebenen und Zahlen entsprechen> 10, sondern auch in der 2. oder 3. Ebene erlauben Zeichen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top