Pergunta

Eu tenho um string:

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)

Eu quero saber qual a versão do Firefox está na string (3.5.2).

O meu regex atual é:

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

e retorna Firefox/3.5.2

Eu só quero que ele retorne 3.5.2 da versão Firefox, não as outras versões do string. Eu já sei o navegador é o Firefox.

Foi útil?

Solução

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

retornará 3.5.2 como todo o jogo (usando lookbehind - que não está disponível em todos os sabores de regex, porém, especialmente JavaScript).

Então, se ele tem que ser JavaScript, procurar Firefox/(\d+(?:\.\d+)+) e combinar o uso não. 1.

Uma vez que, em teoria, poderia haver mais de um dígito (por exemplo, versão 3.10.0), eu também mudou essa parte da regex, permitindo um ou mais dígitos para cada número. Além disso, não há necessidade de escapar da barra.

Outras dicas

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

Criar um grupo de captura em torno dos números como eu fiz acima com o (). Em seguida, a regex você quer será no 2º índice na matriz que é retornado. por exemplo para zero de linguagens baseadas matchedArray [1] e ou 1 línguas baseou a sua matchedArray [2]

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

e extrato de jogo # 1, no entanto, isso é feito em sua (não especificada, embora se suspeite JavaScript) motor de regex. Ou, se isso é muito chato de fazer, e seus suportes regex lookbehind:

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

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

Dependendo do seu idioma (eu estou supondo que js) que vai ser o segundo elemento na matriz

i.


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

Às vezes o usuário-agente também contém caracteres, por exemplo:.

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

Internet Explorer é o único outro navegador onde eu vi os caracteres como parte das informações de versão:

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

Além disso, pode haver Firefox cordas user-agent com apenas dois dígitos de versão como este:

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

Com base no que eu vim com esse padrão regex:

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

Ele irá corresponder a qualquer número da versão com 2-3 níveis e números> 10 mas também permitir que personagens no 2º ou 3º nível.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top