سؤال

لدي سلسلة:

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)

أريد أن أعرف ما هو إصدار Firefox في السلسلة (3.5.2).

بلدي الحالي Regex هو:

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

ويعود Firefox/3.5.2

أريد فقط أن أعود 3.5.2 من إصدار Firefox، وليس الإصدارات الأخرى في السلسلة. أنا أعرف بالفعل المتصفح هو فايرفوكس.

هل كانت مفيدة؟

المحلول

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

سيعود 3.5.2 كطابق كامل (باستخدام Lookbehind - وهو غير متوفر في جميع نكهات Regex، على الرغم من أن جافا سكريبت).

لذلك، إذا كان يجب أن يكون جافا سكريبت، ابحث عن Firefox/(\d+(?:\.\d+)+) واستخدام مباراة لا. 1.

نظرا للنظرية، يمكن أن يكون هناك أكثر من رقم واحد (على سبيل المثال، الإصدار 3.10.0)، لقد غيرت أيضا هذا الجزء من Regex، مما يسمح لأرقام واحد أو أكثر لكل رقم. أيضا، ليست هناك حاجة للهروب من مائل.

نصائح أخرى

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

إنشاء مجموعة التقاط حول الأرقام كما فعلت أعلاه مع (). ثم سوف يكون Regex الذي تريده في الفهرس الثاني في الصفيف الذي يتم إرجاعه. على سبيل المثال بالنسبة للغات التي تعتمد على اللغات الصفرية [1] أو لغات واحدة تستند إليها MatchIstaRay [2

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

واستخراج المباراة رقم 1، ولكن يتم ذلك في محرك regex regex (المشتبه بهم، على الرغم من المشتبه بهم. أو، إذا كان هذا مزعجا للغاية، ودعم Regex الخاص بك lookbehind:

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

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

اعتمادا على لغتك (أنا أفترض JS) سيكون العنصر الثاني في الصفيف

بمعنى آخر


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

في بعض الأحيان يحتوي وكيل المستخدم أيضا على أحرف، على سبيل المثال:

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

أيضا، يمكن أن يكون هناك سلاسل وكيل المستخدم فايرفوكس مع رقمين فقطين مثل هذا واحد:

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

بناء على ذلك وصلت إلى نمط Regex هذا:

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

سوف يتطابق مع أي رقم إصدار مع مستويات وأرقام 2-3> 10 ولكن أيضا السماح للأحرف في المستوى الثاني أو الثالث.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top