Hjälp med search string för nummer som tex 4.0.5

Permalänk
Medlem

Hjälp med search string för nummer som tex 4.0.5

Jag vill ha hjälp med att få en search string så att man kan checka minimum version för webläsare med 2 punkter i version numret tex 4.0.5

Den search string som jag just nu använder är =

(\d+\.\d+)

funkar med vanliga 4.1 och 4.10 version nummer men inte med 4.0.5

Försökte med detta men det funkade inte heller =

(\d+\.\d+\.\d+)

den ser version numret 4.0.6 som 4.0

Kan någon hjälpa mig med detta tack

Permalänk
Medlem

(?:\d+\.)+\d+

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Teknocide
(?:\d+\.)+\d+

verkar inte fungera, gjorde jag någoting fel? =

else if ((/Safari[\/\s]((?:\d+\.)+\d+)/.test(navigator.userAgent)) && (/Version[\/\s]((?:\d+\.)+\d+)/.test(navigator.userAgent)))

Permalänk
Medlem

Du stoppar in uttrycket i en capture group, men jag vet inte om det är det som felar.

edit: Jag får matches med följande tester:

regex = /(?:\d+\.)+\d/; alert(regex.test('3.5.7')); alert(regex.test('12.35.78')); alert(regex.test('0.5')); alert(regex.test('1.2.3.4.5.6'));

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Teknocide
Du stoppar in uttrycket i en capture group, men jag vet inte om det är det som felar.

edit: Jag får matches med följande tester:

regex = /(?:\d+\.)+\d/; alert(regex.test('3.5.7')); alert(regex.test('12.35.78')); alert(regex.test('0.5')); alert(regex.test('1.2.3.4.5.6'));

hmm, kan inte få det att fungera, här är hela koden för att kolla safari minimum versionen (det är en "else if" för att jag checkar andra webläsare före safari),
kan du fixa koden åt mig tack =

var safariversion=4.0.6 else if (/Version[\/\s](/(?:\d+\.)+\d/)/.test(navigator.userAgent) { var safarisearch=new Number(RegExp.$1) if (safarisearch>=safariversion) { } else { alert("Your webbrowser needs to be updated, update to Safari " + safariversion + " or newer \n\nDin webläsare behöver updateras, uppdatera till Safari " + safariversion + " eller nyare \n\nSu webbrowser debe ser actualizado, la actualización a Safari " + safariversion + " o más nuevo "); } }

Permalänk
Medlem

Nej jag tänker inte göra ditt jobb åt dig, men jag kan hjälpa dig. Har du ens kollat vad du får för scriptfel? Tips: det finns inga värden som har två decimalpunkter i konventionell matematik.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Teknocide
Tips: det finns inga värden som har två decimalpunkter i konventionell matematik.

så hur löser man detta? så här eller? (bara ett exempel, har inte testat det, men den andra gången man söker så behövs väll en annan search string) =

var safariversiondel1=4.0 var safariversiondel2=6 else if (/Version[\/\s](/(?:\d+\.)+\d/)/.test(navigator.userAgent) { var safarisearch=new Number(RegExp.$1) if (safarisearch>=safariversiondel1) { if (/Version[\/\s](/(?:\d+\.)+\d/)/.test(navigator.userAgent) <!-- fast en annan search string--> { var safarisearch=new Number(RegExp.$1) if (safarisearch>=safariversiondel2) { } else { alert("Your webbrowser needs to be updated, update to Safari " + safariversion + " or newer \n\nDin webläsare behöver updateras, uppdatera till Safari " + safariversion + " eller nyare \n\nSu webbrowser debe ser actualizado, la actualización a Safari " + safariversion + " o más nuevo "); } else { alert("Your webbrowser needs to be updated, update to Safari " + safariversion + " or newer \n\nDin webläsare behöver updateras, uppdatera till Safari " + safariversion + " eller nyare \n\nSu webbrowser debe ser actualizado, la actualización a Safari " + safariversion + " o más nuevo "); } } else { alert("Your webbrowser needs to be updated, update to Safari " + safariversion + " or newer \n\nDin webläsare behöver updateras, uppdatera till Safari " + safariversion + " eller nyare \n\nSu webbrowser debe ser actualizado, la actualización a Safari " + safariversion + " o más nuevo "); } }

Permalänk
Medlem

Använd strängar, det är vad regex arbetar med. Du får plocka ut din versionssträng och jämföra varje enskild siffra med versionsdatan som navigator.userAgent returnerar. Använd regex.exec() för att plocka ut siffror som matchar. Ha ett så enkelt och tight mönster som möjligt.

Tänk även på att strängen som userAgent returnerar kan döljas eller "spoofas" att se ut som någon annan browser, eller så kan javascript helt enkelt vara avslaget varvid hela funktionaliteten försvinner.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem

Hmm, det verkar faktiskt som att man kan jämföra strängarna "1.2.3" och "2.3" rakt av och få resultatet att 2.3 är större än 1.2.3.. detta är bra för din del, då slipper du jämföra siffra för siffra.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Teknocide
Hmm, det verkar faktiskt som att man kan jämföra strängarna "1.2.3" och "2.3" rakt av och få resultatet att 2.3 är större än 1.2.3.. detta är bra för din del, då slipper du jämföra siffra för siffra.

Men då är även 2.9 > 2.10, vilket inte är önskvärt.