RegEx, der eine Zahl < 255 findet?
Eddie
- programmiertechnik
Hallo allerseits,
ich habe leider nichts dazu gefunden, Google war mir keine Hilfe: kann ich mit einem regulären Ausdruck prüfen, ob ein String (bzw. eine Zahl) größer als 255 ist?
Also bei ($a = 256) hätte ich die Zahl gerne als Ergebnis. Keine Ahnung, ob das geht?
Danke euch,
Eddie
Es gibt keinen einzelnen regulären Ausdruck, der das leisten kann. Allerdings könntest Du (parseInt(input) || 0) > 255
verwenden, um zu testen, ob der String, wenn er eine Zahl enthält, einen Wert von über 255 hat.
Gruß, LX
ich habe leider nichts dazu gefunden, Google war mir keine Hilfe: kann ich mit einem regulären Ausdruck prüfen, ob ein String (bzw. eine Zahl) größer als 255 ist?
Also bei ($a = 256) hätte ich die Zahl gerne als Ergebnis. Keine Ahnung, ob das geht?
muss es ein regulärer ausdruck sein? ich würds recht simpel machen
regulärer ausdruck liefert zahl (ab 3-stellen), übergibt sie an mathematische funktion die überprüft, ob die zahl > 255 ist
Hallo suit,
muss es ein regulärer ausdruck sein? ich würds recht simpel machen
Das Problem ist, dass es sich um ein Array solcher Zahlen handelt (genauer: um RGB-Values). Und ich dachte, ich koennte unter PHP mittels preg_grep auf einen Schlag prüfen, ob ungültige Werte drin sind. Aber das geht dann wohl nicht :-(
Wenn ihr dafuer sonst eine Idee habt, freue ich mich, ansonsten schreibe ich halt eine Funktion, die das RGB-Array durchlaeuft und einzeln checkt!
Eddie
Wenn ihr dafuer sonst eine Idee habt, freue ich mich, ansonsten schreibe ich halt eine Funktion, die das RGB-Array durchlaeuft und einzeln checkt!
musst du nicht zwangsläufig - ggf hilft es auch, das array nach dem wert zu sortieren (notfalls mit einem zweiten pseudoarray mittels multisort array_multisort und dann alles > 255 rauszuwerfen (dann musst du nicht jeden wert einzeln prüfen sondern weist ab einem bestimmt wert, dass nur noch ungülte kommen können und kannst deine schleife die das array abackert dort beenden) - alternativ, rechne die werte von rgb in hex um (dechex() hilft dabei) jede hexadezimalziffer mit mehr als zwei stellen ist per defintion größer als 256
Hallo suit,
musst du nicht zwangsläufig - ggf hilft es auch, das array nach dem wert zu sortieren (notfalls mit einem zweiten pseudoarray mittels multisort array_multisort und dann alles > 255 rauszuwerfen (dann musst du nicht jeden wert einzeln prüfen sondern weist ab einem bestimmt wert, dass nur noch ungülte kommen können und kannst deine schleife die das array abackert dort beenden) - alternativ, rechne die werte von rgb in hex um (dechex() hilft dabei) jede hexadezimalziffer mit mehr als zwei stellen ist per defintion größer als 256
Beides sehr interessante Vorschlaege! Fuer meine 1-dimensionalen RGB-Arrays der Länge 3 waere also bspw. folgendes möglich:
$a = (255, 255, 256);
return (min($a) < 0 || max($a) > 255);
oder
return (strlen(dechex(array_product($a))) > 6);
Ist natuerlich beides nicht 100% wasserdicht, aber immerhin ;-)
Eddie
jede hexadezimalziffer mit mehr als zwei stellen ist per defintion größer als 256
Beides sehr interessante Vorschlaege!
2-stellige hexadezimalzahlen sind natürlich größer als 255 da xFF exakt 255 entspricht, x100 (dreistellig) 256
ich bin auf das endprodukt gespannt - aber mit dem 1-dimensionalen array wundert mich jetzt - ich dachte du hast ein mehrdimensionales array - quasi eine "tabelle" mit dezimalen rgb werten ;) die du durchrattern musst - wenns eh nur 3 einträge sind, ist das ja kein aufwand - da ist die verwendete funktion performancemäßig fast egal - oder versteh ich das falch
Hi suit,
ich bin auf das endprodukt gespannt - aber mit dem 1-dimensionalen array wundert mich jetzt - ich dachte du hast ein mehrdimensionales array - quasi eine "tabelle" mit dezimalen rgb werten ;) die du durchrattern musst - wenns eh nur 3 einträge sind, ist das ja kein aufwand - da ist die verwendete funktion performancemäßig fast egal - oder versteh ich das falch
Nein, du hast das nicht falsch verstanden! Ich war nur aus reinem Interesse an der einfachsten Loesung interessiert. Und ich wollte mir die Funktion sparen ;-) Mit RegEx waer das echt schoen gewesen!
Eddie
Nein, du hast das nicht falsch verstanden! Ich war nur aus reinem Interesse an der einfachsten Loesung interessiert. Und ich wollte mir die Funktion sparen ;-) Mit RegEx waer das echt schoen gewesen!
ja, aber wie lx indirekt sagt ist ein einfach regulärer ausdruck hier nicht möglich, natürlich ist es mit einem regulären ausdruck möglich, aber in diesem fall ist dieser so komplex, dass er in keinem verhältnis zum nutzen steht ;)
Hallo,
hast Du mal ein Beispiel, in welchem Kontext die Zahlen vorkommen?
Grüße Basti
Sup!
Also, eine Zahl größer 255 ist:
Da kann man ja ganz leicht einen RegEx draus machen...
Ob das sinnvoll ist, sei dahingestellt.
Gruesse,
Bio
Hi,
Also, eine Zahl größer 255 ist:
- Jede 4-stellige Zahl (mal angenommen, führende Nullen sind nicht erlaubt)
oder- Jede 3-stellige Zahl, die mit [3-9] anfängt
oder- Jede 3-stellige Zahl der Form 26\d
oder- Jede 3-stellige Zahl der Form 25[6-9]
270 .. 299
- Jede 3-stellige Zahl der Form 26\d
muß eher 2[6-9]\d heißen ;-)
cu,
Andreas
Heureka! Es geht also doch!!! Ich lass trotzdem die Finger davon, war aber schoen, euch beim (erfolgreicheren als meinem) Um-die-Ecke-Denken zuzusehen :-) Horizont erfolgreich erweitert, dann aber doch noch Frank Schönmanns Zitat (s.o.) gelesen ;-)
@@Eddie:
[…] dann aber doch noch Frank Schönmanns Zitat (s.o.) gelesen ;-)
Welches von beiden: das über reguläre Ausdrücke oder das über Idioten? ;-)
Wobei mich ersteres irgendwie an Zitat 1266 erinnert.
Live long and prosper,
Gunnar
Sup!
- Jede 4-stellige Zahl (mal angenommen, führende Nullen sind nicht erlaubt)
Also quasi jede Zahl \d*[1-9]+\d{3,}
Gruesse,
Bio
hi!
ich habe leider nichts dazu gefunden, Google war mir keine Hilfe: kann ich
mit einem regulären Ausdruck prüfen, ob ein String (bzw. eine Zahl) größer
als 255 ist?
Some people, when confronted with a problem, think "I know, I'll use
regular expressions." Now they have two problems.
bye, Frank!