Domanda

Ho una stringa:

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)

Vorrei sapere quale versione di Firefox è nella stringa (3.5.2).

Il mio regex corrente è:

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

e restituisce Firefox/3.5.2

Voglio solo per tornare 3.5.2 dalla versione di Firefox, non le altre versioni della stringa. So già il browser è Firefox.

È stato utile?

Soluzione

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

restituirà 3.5.2 come l'intera partita (usando lookbehind - che non è disponibile in tutti i sapori regex, però, soprattutto JavaScript).

Quindi, se deve essere JavaScript, cercare Firefox/(\d+(?:\.\d+)+) e utilizzare la corrispondenza non. 1.

Dato che in teoria ci potrebbe essere più di una cifra (ad esempio, la versione 3.10.0), ho cambiato anche quella parte della regex, consentendo una o più cifre per ogni numero. Inoltre, non v'è alcuna necessità di sfuggire alla barra.

Altri suggerimenti

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

Crea un gruppo di cattura intorno ai numeri, come ho fatto in precedenza con il (). Poi l'espressione regolare che si desidera sarà nel 2 ° indice nella matrice restituita. per esempio per linguaggi basati a zero matchedArray [1] e 1 o linguaggi basati sua matchedArray [2]

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

ed estrarre Partita # 1, ma questo è fatto nel vostro (non specificata, anche se si sospetta JavaScript) motore regex. Oppure, se questo è molto fastidioso da fare, e la vostra regex supporta lookbehind:

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

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

A seconda della lingua (sto supponendo js) sarà il secondo elemento della matrice

cioè.


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

A volte l'user-agent contiene anche i caratteri, per esempio:.

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

Internet Explorer è l'unico altro browser in cui ho visto i personaggi come parte delle informazioni sulla versione:

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

Inoltre, non ci può essere di Firefox stringhe user-agent con due sole cifre versione come questa:

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

In base a che sono arrivato fino a questo schema di espressione regolare:

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

Sarà adattarsi a qualsiasi numero di versione con 2-3 livelli e numeri> 10 ma anche permettere personaggi del 2 ° o 3 ° livello.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top