Hex-строки (шестнадцатеричные строки) представляют собой последовательности символов, основанные на системе счисления с основанием 16. В JavaScript и веб-разработке они встречаются в нескольких ключевых формах:
4fa3b2,
00ffcc, a1b2c3d4#fff,
#ffffff, #0a1b2cОснову таких строк составляют символы:
0–9, a–f, A–F
Validator.js предоставляет специализированные функции для проверки подобных значений, ориентируясь на наиболее распространённые сценарии использования.
Функция isHexadecimal проверяет, состоит ли строка
исключительно из допустимых hex-символов.
Сигнатура:
validator.isHexadecimal(str)
Поведение:
0-9, a-f,
A-F0x,
#)Примеры:
validator.isHexadecimal('1a2b3c'); // true
validator.isHexadecimal('AABBCC'); // true
validator.isHexadecimal('0x1a2b'); // false
validator.isHexadecimal('abc def'); // false
validator.isHexadecimal('#aabbcc'); // false
Данная функция используется в задачах, где hex-строка рассматривается как абстрактное значение (например, идентификаторы, хеши, бинарные данные в текстовом виде).
Функция isHexColor ориентирована на проверку цветовых
значений в hex-формате.
Сигнатура:
validator.isHexColor(str)
Поддерживаемые форматы:
#RGB#RRGGBBОсобенности:
# в начале строки#fff)#ffffff)Примеры:
validator.isHexColor('#fff'); // true
validator.isHexColor('#ffffff'); // true
validator.isHexColor('fff'); // false
validator.isHexColor('#ggg'); // false
validator.isHexColor('#123abz'); // false
Данная функция строго ограничена цветовыми значениями и не предназначена для общих hex-строк.
Несмотря на схожесть работы с шестнадцатеричными символами, функции имеют принципиально разные области применения.
| Характеристика | isHexadecimal | isHexColor |
|---|---|---|
Префикс # |
не допускается | обязателен |
| Диапазон символов | 0-9, a-f, A-F | 0-9, a-f, A-F |
| Формат | произвольная строка | строго цвет |
| Короткая форма | не поддерживается | поддерживается (#RGB) |
| Область применения | данные, идентификаторы | UI, цвета CSS |
Валидация пользовательского ввода цвета:
function validateColor(input) {
return validator.isHexColor(input);
}
Проверка hex-идентификаторов в API:
function validateId(id) {
return validator.isHexadecimal(id);
}
Фильтрация массива значений:
const values = ['a1b2c3', '#fff', '123xyz', '00ff00'];
const hexOnly = values.filter(validator.isHexadecimal);
// ['a1b2c3', '00ff00']
В реальных приложениях проверки hex-строк часто комбинируются с другими правилами.
Пример схемы валидации объекта:
const schema = {
color: (value) => validator.isHexColor(value),
hash: (value) => validator.isHexadecimal(value),
};
Проверка входных данных API:
function validatePayload(payload) {
return (
validator.isHexColor(payload.themeColor) &&
validator.isHexadecimal(payload.userHash)
);
}
1. Использование # в isHexadecimal
validator.isHexadecimal('#abc'); // false
2. Передача пустой строки
validator.isHexColor(''); // false
validator.isHexadecimal(''); // false
3. Некорректные символы
validator.isHexadecimal('12xz'); // false
4. Попытка использовать RGB или HEX вместе
validator.isHexColor('rgb(255,255,255)'); // false
5. Пробелы и скрытые символы
validator.isHexadecimal('a1 b2'); // false
Функции Validator.js для hex-проверок основаны на регулярных выражениях и выполняются за линейное время относительно длины строки.
Для большинства случаев их производительность достаточна даже при массовой проверке данных.
Альтернативный подход — использование собственных регулярных выражений:
Hexadecimal:
/^[0-9a-fA-F]+$/
Hex color:
/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/
Однако использование Validator.js предпочтительнее в крупных проектах из-за унификации правил валидации и уменьшения дублирования логики.