2017-03-17 4 views
2

Ich möchte passen, alles passen, die an einer Schnur wie eine Versionsnummer scheint, so begann ich mit diesem CodeRegular Expression Versionsnummer Muster

$str = 'ver=4.7.3/asdasd, ver=1, ver=2.5?, ver=4.7, ver=a124bcd12345'; 

preg_match_all("/ver=(\d+(\.\d{1,2}))/", $str, $output); 

// $output 
[ 
    "ver=4.7", 
    "ver=2.5", 
    "ver=4.7", 
], 
[ 
    "4.7", 
    "2.5", 
    "4.7", 
], 
[ 
    ".7", 
    ".5", 
    ".7", 
], 

Mit dem Ergebnis, das ich mit $output[1] bekam fast scheint es, aber es fehlt noch, es sollte folgende Bedingungen erfüllen:

Aber jetzt, statt 4.7.3 gibt es nur 4.7 zurück.

Ich bin immer noch ein Neuling mit regulären Ausdrücken, so dass diese Dinge für mich immer noch so schrecklich sind. Jede Hilfe wird sehr geschätzt.

Antwort

2

Sie vielleicht die folgende regex verwenden:

(?<=ver=)[\d.]+ 

siehe regex demo

P HP (demo)

$str = 'ver=4.7.3/asdasd, ver=1, ver=2.5?, ver=4.7, ver=a124bcd12345'; 
preg_match_all('/(?<=ver=)[\d.]+/', $str, $output); 
print_r($output); 
+0

Vielen Dank für die Antwort aktualisiert, da ich wirklich auch für die Zeichenfolge zu überprüfen, benötigt 'ver ='. – dexterb

2

Hoffe, das wird funktionieren.

Regex: ver=(\d+(\.\d){1,2})

Regex demo