regex javascript-match-RGB und RGBA
Derzeit habe ich diese regex passt auf einen RGB-string. Ich brauche es so erweitert, dass es ist robust genug, um dem übereinstimmen, entweder in RGB oder RGBA.
rgbRegex = /^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/; //matches RGB
var rgbString = "rgb(0, 70, 255)";
var RGBAString = "rgba(0, 70, 255, 0.5)";
var rgbRegex = /^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/;
//need help on this regex
//I figure it needs to be ^rgba?, and then also an optional clause to handle the opacity
var partsRGB = rgbString.match(rgbRegex);
var partsRGBA = RGBAString.match(rgbRegex);
console.log(partsRGB); //["rgb(0, 70, 255)", "0", "70", "255"]
console.log(partsRGBA); //null. I want ["rgb(0, 70, 255, 0.5)", "0", "70", "255", "0.5"]
- stackoverflow.com/questions/638948/...
- Das wird eine Menge der false-negatives. Leerzeichen sind erlaubt vor dem Komma und Prozent-Werte erlaubt sind anstelle von Dezimalstellen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wird dies tun?
rgb(0,0,0, 0.5);
gültig - das ist nicht gültige rgb Farbe.Es ist nicht so einfach -, ein rgb-illegal mit einem vierten parameter.
Sie müssen auch erlauben Prozentsatz Dezimalzahlen als auch als integer-Werte
für die rgb-zahlen. Und Leerzeichen sind erlaubt, fast überall.
//testing:
Machte ich einen regex, der überprüft, ob die rgb() und rgba () - Werte. Es prüft, für 3-Tupeln von 0-255 und dann eine optionale dezimale Zahl zwischen 0-1 für Transparenz. TLDR;
Gebrochen und in die verschiedenen Teile, die wir haben:
0-255 ist abgestimmt mit Wechsel von:
Den Umgang mit Komma und Leerzeichen um die 0-255 Tupel nimmt einigen Raum. Ich Spiel 0-255 Tupel mit verbindlichen nachgestellte Komma und optionalen Leerzeichen zweimal
Dann eine 0-255 Tupel mit optionalem Komma und Raum - ermöglicht die rgb () - Werte ohne das nachgestellte Komma
Dann kommt eine optionale 0-1 als ganze Zahl oder Dezimalzahl:
Und wir am Ende mit einer schließenden Klammer
25[0-5]
= match-zahlen von 250 auf 255.2[0-4]\d
= Match-zahlen von 200 bis 249.1\d\d
= match-zahlen von 100 bis 199.\d\d?
= Platzhalter für eine beliebige Anzahl von 0 bis 99 (die?
macht die zweite Stelle optional). Die Art und Weise Sie erklärt, dass es falsch ist:25[0-5] // If tripple digit starting with 25 then last number must be 0
ist falsch, so ist2[0-4]\d // If tripple digit starting with 2, second digit must be 0-5
eine unvollständige Beschreibung. 😉,\s?
ist unzureichend.rgb/a
können so viele Leerzeichen, wie Sie möchten vor dem Komma und nach dem Komma, so\s*,\s*
wäre der richtige Weg.Wenn Sie müssen streng sein, d.h. es auszuschließen, rgb(0, 70, 255, 0.5), Sie müssen Lunte beiden Fällen zusammen mit | :
http://jsfiddle.net/YxU2m/2/
ich dieses es ist Hilfe
wenn Sie das Kontrollkästchen
rgba(102,51,68,0.6)
wird es wieder
und wenn Sie überprüfen
rgb(102,51,68)
wird es wieder
Dieser regex ist ein guter Kompromiss zwischen der Komplexität der regex-und die Anzahl der Anwendungsfälle abgedeckt.
rgb und rgba müssen anders behandelt werden, als man braucht, das 4. argument und nicht.
Dieser regex berücksichtigt. Es befasst sich auch mit:
Diese regex nicht berücksichtigt:
Versuchen Sie das folgende Skript für RGBA-Wert, das Ergebnis ist ein Objekt.
JS: