Библиотека Validator.js содержит набор методов для проверки строковых
значений. Для работы с CSS-цветами используются методы
isHexColor() и isRgbColor(). Они позволяют
валидировать пользовательский ввод, параметры темизации, данные из форм
и конфигурационные значения интерфейса.
Метод isHexColor() проверяет, является ли строка
корректным HEX-цветом.
Поддерживаются стандартные CSS-форматы:
#fff
#ffffff
#abcd
#aabbccdd
Метод возвращает:
true — строка является HEX-цветом;false — строка не соответствует формату.npm install validator
const validator = require('validator');
import validator from 'validator';
validator.isHexColor(str)
| Параметр | Тип | Описание |
|---|---|---|
str |
string | Проверяемая строка |
import validator from 'validator';
console.log(validator.isHexColor('#ff0000'));
Результат:
true
validator.isHexColor('#fff');
true
validator.isHexColor('#ffffff');
true
validator.isHexColor('#ffff');
true
validator.isHexColor('#ffffffff');
true
validator.isHexColor('ffffff');
false
validator.isHexColor('#gggggg');
false
validator.isHexColor('#ff');
false
validator.isHexColor('');
false
Метод анализирует:
# в начале строки;Допустимые символы:
0-9
a-f
A-F
function validateColor(color) {
if (!validator.isHexColor(color)) {
return 'Некорректный HEX-цвет';
}
return 'OK';
}
console.log(validateColor('#12abef'));
app.post('/theme', (req, res) => {
const { primaryColor } = req.body;
if (!validator.isHexColor(primaryColor)) {
return res.status(400).json({
error: 'Invalid color'
});
}
res.json({
success: true
});
});
const colors = [
'#ff0000',
'#00ff00',
'#invalid',
'#123456'
];
const validColors = colors.filter(color =>
validator.isHexColor(color)
);
console.log(validColors);
Результат:
[ '#ff0000', '#00ff00', '#123456' ]
Пользовательские данные часто содержат лишние пробелы.
validator.isHexColor(' #ffffff ');
false
validator.isHexColor(' #ffffff '.trim());
true
function setThemeColor(color) {
if (!validator.isHexColor(color)) {
throw new Error('Invalid HEX color');
}
document.body.style.backgroundColor = color;
}
Метод не проверяет:
red, blue);Пример:
validator.isHexColor('red');
false
Метод isRgbColor() проверяет корректность RGB- и
RGBA-цветов.
Поддерживаются форматы:
rgb(255, 0, 0)
rgba(255, 0, 0, 0.5)
validator.isRgbColor(str[, options])
| Параметр | Тип | Описание |
|---|---|---|
str |
string | Проверяемое значение |
options |
object | Дополнительные настройки |
validator.isRgbColor('rgb(255, 0, 0)');
true
validator.isRgbColor('rgba(255, 0, 0, 0.5)');
true
validator.isRgbColor('rgb(0,0,0)');
true
validator.isRgbColor('rgba(255,255,255,1)');
true
validator.isRgbColor('rgba(10, 20, 30, 0.25)');
true
validator.isRgbColor('rgb(300, 0, 0)');
false
validator.isRgbColor('rgb(-1, 0, 0)');
false
validator.isRgbColor('rgb(255)');
false
validator.isRgbColor('rgba(255,0,0,2)');
false
Допустимый диапазон:
0–255
Допустимый диапазон:
0–1
Примеры:
rgba(255,0,0,0)
rgba(255,0,0,1)
rgba(255,0,0,0.75)
Разрешает процентные значения.
validator.isRgbColor('rgb(50%, 50%, 50%)');
false
validator.isRgbColor(
'rgb(50%, 50%, 50%)',
{ allow_percent_values: true }
);
true
validator.isRgbColor(
'rgba(100%, 0%, 50%, 0.5)',
{ allow_percent_values: true }
);
true
function isValidCssColor(color) {
return (
validator.isHexColor(color) ||
validator.isRgbColor(color)
);
}
console.log(isValidCssColor('#ff0000'));
console.log(isValidCssColor('rgb(255,0,0)'));
console.log(isValidCssColor('blue'));
Результат:
true
true
false
const theme = {
primary: '#1e90ff',
secondary: 'rgb(255, 255, 255)'
};
function validateTheme(theme) {
const values = Object.values(theme);
return values.every(color =>
validator.isHexColor(color) ||
validator.isRgbColor(color)
);
}
console.log(validateTheme(theme));
const styles = [
'rgb(255,0,0)',
'#00ff00',
'rgba(0,0,0,0.5)',
'hsl(120, 100%, 50%)'
];
const valid = styles.filter(style =>
validator.isHexColor(style) ||
validator.isRgbColor(style)
);
console.log(valid);
validator.isRgbColor('hsl(120, 100%, 50%)');
false
validator.isRgbColor(' rgb(255,0,0) ');
false
validator.isRgbColor(' rgb(255,0,0) '.trim());
true
function validateInput(value) {
return (
validator.isHexColor(value) ||
validator.isRgbColor(value) ||
validator.isHSL(value)
);
}
| Метод | Поддерживаемые форматы |
|---|---|
isHexColor() |
#fff, #ffffff, #ffffffff |
isRgbColor() |
rgb(), rgba() |
const palette = {
success: '#28a745',
warning: 'rgb(255,193,7)',
danger: 'rgba(220,53,69,0.8)'
};
for (const [name, color] of Object.entries(palette)) {
const isValid =
validator.isHexColor(color) ||
validator.isRgbColor(color);
console.log(name, isValid);
}
Методы работают быстро, поскольку используют регулярные выражения и простую проверку диапазонов.
Подходят для:
value.trim()
if (!validator.isHexColor(color)) {
throw new Error('Invalid color');
}
const isColor =
validator.isHexColor(value) ||
validator.isRgbColor(value);
Методы проверяют только корректность строки, но не анализируют: