Question

J'ai une chaîne:

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)

Je veux savoir quelle version de Firefox est dans la chaîne (3.5.2).

Mon regex actuelle est:

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

et il retourne Firefox/3.5.2

Je veux seulement qu'il revienne 3.5.2 de la version Firefox, pas les autres versions de la chaîne. Je connais déjà le navigateur est Firefox.

Était-ce utile?

La solution

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

sera de retour comme le match 3.5.2 entier (en utilisant lookbehind - qui ne sont pas disponibles dans toutes les saveurs regex, mais, surtout JavaScript).

Alors, si elle doit être JavaScript, recherchez Firefox/(\d+(?:\.\d+)+) et Ressemblance pas. 1.

Comme en théorie il pourrait y avoir plus d'un chiffre (par exemple, la version 3.10.0), je l'ai également changé cette partie de l'expression régulière, permettant un ou plusieurs chiffres pour chaque numéro. En outre, il n'y a pas besoin d'échapper à la barre oblique.

Autres conseils

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

Créer un groupe de capture autour des chiffres comme je l'ai fait ci-dessus avec le (). Ensuite, l'expression rationnelle que vous voulez sera dans le 2ème indice dans le tableau retourné. par exemple pour les langues à base zéro matchedArray [1] et 1 ou langues basées son matchedArray [2]

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

et extraire correspondance n ° 1, mais cela se fait dans votre (non spécifié, si on soupçonne JavaScript) moteur regex. Ou, si cela est très gênant pour le faire, et votre regex prend en charge lookbehind:

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

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

En fonction de votre langue (je suppose js) ce sera le deuxième élément du tableau

i.e..


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

Parfois, l'agent utilisateur contient également des caractères, par exemple:.

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

Internet Explorer est le seul autre navigateur où je l'ai vu les personnages dans le cadre de l'information de version:

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

En outre, il peut y avoir Firefox chaînes d'agent utilisateur avec seulement deux chiffres de version comme celle-ci:

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

Sur cette base, je suis venu avec ce modèle regex:

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

Il correspond à aucun numéro de version avec 2-3 niveaux et numéros> 10 mais permettent aussi des personnages dans le 2ème ou 3ème niveau.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top