Beispielsweise:
AA33FF
= gültige Hex-Farbe
Z34FF9
= ungültige Hex-Farbe (enthält Z)
AA33FF11
= ungültige Hex-Farbe (hat zusätzliche Zeichen)
javascript
jquery
colors
Alex
quelle
quelle
AARRGGBB
Format enthält.Antworten:
Um dies zu erläutern:
^ ->
entsprechen beginnend# ->
ein Hash[0-9A-F] ->
beliebige ganze Zahl von 0 bis 9 und einen beliebigen Buchstaben von A bis F{6} ->
die vorherige Gruppe erscheint genau 6mal$ ->
Ende übereinstimmeni ->
ignorieren FallWenn Sie Unterstützung für dreistellige HEX-Codes benötigen, verwenden Sie Folgendes:
Der einzige Unterschied ist der
wird ersetzt durch
Dies bedeutet, dass anstelle von genau 6 Zeichen genau 3 Zeichen, jedoch 1 oder 2 Mal übereinstimmen. Erlauben
ABC
undAABBCC
, aber nichtABCD
quelle
color: #f00;
wird ebenfalls als rot (# ff0000) interpretiert./^#[0-9a-f]{3}(?:[0-9a-f]{3})?$/i.test("#f00")
/^#([0-9a-f]{3}){1,2}$/i
zu der Mischung hinzufügen ./^#[0-9A-F]{3,6}$/i.test('#aabb')
ebenfalls übergeben,#aabb
ist jedoch keine gültige Hex-Farbe.Diese Antwort wurde verwendet, um falsch positive Ergebnisse zu erzielen, da sie stattdessen
Number('0x' + hex)
verwendet wurdeparseInt(hex, 16)
.parseInt()
analysiert vom Anfang der Zeichenfolge bis ein Zeichen erreicht ist, das nicht in radix (16
) enthalten ist. Dies bedeutet, dass Zeichenfolgen wie 'AAXXCC' analysiert werden können, da es mit 'AA' beginnt.Number()
Auf der anderen Seite wird nur analysiert, wenn die gesamte Zeichenfolge mit dem Radix übereinstimmt.Number()
Nehmen Sie jetzt keinen Radix-Parameter, aber zum Glück können Sie Zahlenliterale voranstellen, um eine Zahl in anderen Radien zu erhalten.Hier ist eine Tabelle zur Verdeutlichung:
quelle
parseInt
nehmen wird"abcZab"
, finde das"Z"
ungültig (für Radix 16) und ignoriere es und alles danach. Es nimmt dann den Anfang"abc"
und konvertiert ihn in2748
(was auch das Ergebnis davon istparseInt("abcZab", 16)
, zu beweisen, dass dies die Logik ist, die geschieht). Wie der Name schon sagt, wird eine ZeichenfolgeparseInt
analysiert . Genau wie wenn Sie eine Zahl mit Einheiten mit einem Radix von 10 analysierenparseInt("10px", 10)
würden, würden Sie erhalten10
. Sie können es hier beschrieben sehen: es5.github.io/#x15.1.2.2 (Schritt 11)Dies kann ein kompliziertes Problem sein. Nach mehreren Versuchen fand ich eine ziemlich saubere Lösung. Lassen Sie den Browser die Arbeit für Sie erledigen.
Schritt 1: Erstellen Sie ein Div, dessen Rahmenstil auf "Keine" gesetzt ist. Das Div kann außerhalb des Bildschirms positioniert werden oder es kann ein beliebiges Div auf Ihrer Seite sein, das die Ränder nicht verwendet.
Schritt 2: Setzen Sie die Rahmenfarbe auf eine leere Zeichenfolge. Der Code könnte ungefähr so aussehen:
Schritt 3: Stellen Sie die Rahmenfarbe auf die Farbe ein, bei der Sie sich nicht sicher sind.
Schritt 4: Überprüfen Sie, ob die Farbe tatsächlich geändert wurde. Wenn testcol ungültig ist, wird keine Änderung vorgenommen.
Schritt 5: Räumen Sie nach sich selbst auf, indem Sie die Farbe auf eine leere Zeichenfolge zurücksetzen.
Die Div:
Nun die JavaScript-Funktion:
In diesem Fall gibt die Funktion eine Richtig / Falsch-Antwort auf die Frage zurück. Die andere Option besteht darin, einen gültigen Farbwert zurückzugeben. Ihr ursprünglicher Farbwert, der Wert von borderColor oder eine leere Zeichenfolge anstelle ungültiger Farben.
quelle
Wenn Sie versuchen, es in HTML zu verwenden Versuchen Sie, dieses Muster direkt zu verwenden:
mögen
Es wird eine Validierung gegeben, die dem angeforderten Format entspricht.
quelle
https://gist.github.com/dustinpoissant/22ce25c9e536bb2c5a2a363601ba261c
Hinweis: Dies erfordert jQuery
Dies funktioniert für ALLE Farbtypen, nicht nur für Hex-Werte. Es ist auch nicht anhängen unnötige Elemente an den DOM - Baum.
quelle
Wenn Sie eine Funktion benötigen, die Ihnen sagt, ob eine Farbe gültig ist, können Sie sich auch etwas Nützliches geben lassen - die berechneten Werte dieser Farbe - und null zurückgeben, wenn es sich nicht um eine gültige Farbe handelt. Hier ist mein Versuch mit einer kompatiblen (Chrome54 & MSIE11) Funktion, um die RGBA-Werte einer "Farbe" in einem der Formate zu erhalten - sei es "grün" oder "#FFF" oder "# 89abcd" oder "rgb" (0,0,128) 'oder' rgba (0, 128, 255, 0,5) '.
quelle
Fügen Sie eine Längenprüfung hinzu, um sicherzustellen, dass Sie kein falsches Positiv erhalten
}}
quelle