peterS.: RegExp für einen zahlenstring zwischen "0" und "255"

Beitrag lesen

gruss Andreas, hallo seth,

var regXRGBValue = (/[1]$|(?:[2][0-9])$|(?:^1[0-9][0-9])$|(?:^2[0-5][0-5])$/);

Unvollständig.

...

^2[0-5][0-5]

Bei dreistelligen Zahlen mit 2 am Anfang läßt Du als letzte Ziffer nur
0 bis 5 zu, 6 bis 9 sind aber zulässig, falls die 2. Ziffer 0 bis 4 ist.

jo, seth hat mich fuer diesen zweck ja einen besseren ausdruck gelehrt.

mein altes schema konsequent durchgezogen sollte jetzt aber funktionieren:

var regXRGBValue = (/  
  
^[0-9]$|        //   0 -   9  
^[1-9][0-9]$|   //  10 -  99  
^1[0-9][0-9]$|  // 100 - 199  
^2[0-4][0-9]$|  // 200 - 249  
^25[0-5]$       // 250 - 255  
  
/);  
  
  
alert(  
  
  [-1,0,9,10,99,100,199,200,299,249,250,255,256].filter(function (elm/*, idx, arr*/) {  
  
    return ((/^[0-9]$|^[1-9][0-9]$|^1[0-9][0-9]$|^2[0-4][0-9]$|^25[0-5]$/).test(elm));  
  })  
);

bzw. konsolentestfaehig:

alert([-1,0,9,10,99,100,199,200,299,249,250,255,256].filter(function(elm){return((/^[0-9]$|^[1-9][0-9]$|^1[0-9][0-9]$|^2[0-4][0-9]$|^25[0-5]$/).test(elm));}));

liefert mir brav »0,9,10,99,100,199,200,249,250,255« zurueck.

klaert mich bitte mal auf - welcher ausdruck wuerde denn nach der theorie von
   einer regex-engine performanter verarbeitet werden - der von mir ueberarbeitete,
   oder seths dahingeperlter - (/^(?:2(?:5[0-5]|[0-4]\d)|(?:1\d|[1-9])?\d)$/) - und
   vor allem, warum?

dankend - peterS. - pseliger@gmx.net

--
»Because objects in JavaScript are so flexible, you will want to think differently about class hierarchies.
Deep hierarchies are inappropriate. Shallow hierarchies are efficient and expressive.« - Douglas Crockford
ie:( fl:) br:> va:( ls:& fo:) rl:| n3;} n4:} ss:} de:µ js:} mo:? zu:]

  1. 0-9 ↩︎

  2. 1-9 ↩︎