Методы isISBN

Метод isISBN предназначен для проверки корректности международных стандартных книжных номеров ISBN (International Standard Book Number). Он позволяет определить, соответствует ли переданная строка формату ISBN-10 или ISBN-13, включая проверку контрольной суммы, структуры и допустимых символов.

Функция вызывается через основной объект библиотеки:

validator.isISBN(str [, version])

Параметры:

  • str — строка, содержащая предполагаемый ISBN.

  • version — необязательный параметр, задающий версию стандарта:

    • '10' — проверка только ISBN-10
    • '13' — проверка только ISBN-13
    • по умолчанию — допускаются оба формата

Возвращаемое значение:

  • true — если строка является корректным ISBN указанного формата
  • false — если формат или контрольная сумма не соответствуют стандарту

Форматы ISBN

ISBN существует в двух основных вариантах, которые отличаются структурой и алгоритмом проверки:

ISBN-10

Состоит из 10 символов. Последний символ может быть цифрой или символом X, который обозначает значение 10 в контрольной сумме.

Пример:

3-16-148410-X

Структура ISBN-10 включает:

  • групповой идентификатор
  • идентификатор издателя
  • номер издания
  • контрольную цифру

Контрольная сумма вычисляется с использованием весов от 10 до 1.


ISBN-13

Состоит из 13 цифр и полностью совместим с EAN-13 (штрихкодовая система товаров).

Пример:

978-3-16-148410-0

Структура включает:

  • префикс (чаще всего 978 или 979)
  • регистрационная группа
  • издатель
  • номер книги
  • контрольная цифра

Контрольная сумма вычисляется по модулю 10 с чередующимися весами 1 и 3.


Поведение метода

Метод isISBN выполняет несколько проверок:

  1. Очистка входной строки Допускаются пробелы и дефисы, которые игнорируются при валидации.

  2. Проверка длины

    • ISBN-10 должен содержать 10 символов
    • ISBN-13 должен содержать 13 символов
  3. Проверка допустимых символов

    • только цифры
    • для ISBN-10 допускается X в конце
  4. Валидация контрольной суммы

    • выполняется строго по стандарту ISO для соответствующего формата

Использование метода

Проверка ISBN-10

validator.isISBN('3-16-148410-X', '10');

Результат:

true

Даже при наличии дефисов строка корректно распознаётся.


Проверка ISBN-13

validator.isISBN('978-3-16-148410-0', '13');

Результат:

true

Автоматическое определение версии

validator.isISBN('9783161484100');

Функция сама определяет, что строка относится к ISBN-13 и выполняет соответствующую проверку.


Примеры некорректных значений

Неверная контрольная сумма

validator.isISBN('978-3-16-148410-9');

Результат:

false

Несмотря на правильный формат, контрольная цифра не совпадает с вычисленной.


Недопустимые символы

validator.isISBN('978-3-16-14841A-0');

Результат:

false

Наличие букв, кроме допустимого X в ISBN-10, делает строку невалидной.


Неверная длина

validator.isISBN('123456789');

Результат:

false

Слишком короткая строка не может соответствовать стандарту ISBN.


Особенности обработки

Метод обладает рядом поведенческих особенностей, которые важно учитывать при интеграции:

Игнорирование разделителей

Дефисы и пробелы не влияют на результат проверки. Это позволяет использовать разные форматы записи:

validator.isISBN('978 3 16 148410 0', '13'); // true
validator.isISBN('978-3-16-148410-0', '13'); // true

Строгая проверка контрольной суммы

Даже при идеально совпадающей структуре строка будет отклонена, если контрольная цифра не соответствует алгоритму.


Ограниченность символов

Любые дополнительные символы (скобки, точки, буквы вне допустимого диапазона) приводят к отрицательному результату.

validator.isISBN('(978)-3-16-148410-0'); // false

Различия между ISBN-10 и ISBN-13

Характеристика ISBN-10 ISBN-13
Длина 10 13
Использование старый формат современный стандарт
Контрольная схема модуль 11 модуль 10
Символ X допускается не допускается

Практические сценарии применения

Валидация данных в формах

Метод часто используется для проверки пользовательского ввода в библиотеках, интернет-магазинах и каталогах книг.

if (validator.isISBN(inputValue)) {
  // значение корректно
}

Очистка и нормализация данных

Перед сохранением в базу данных ISBN проверяется на соответствие стандарту, что снижает риск ошибок при поиске и индексации.


Интеграция с API книжных сервисов

При работе с внешними источниками данных метод помогает фильтровать некорректные идентификаторы до выполнения запросов.


Частые ошибки при использовании

Передача числа вместо строки

validator.isISBN(9783161484100);

Результат:

false

Метод ожидает строковый тип данных.


Игнорирование версии

При строгих требованиях к формату необходимо явно указывать версию:

validator.isISBN('3-16-148410-X', '13'); // false

Попытка валидации других кодов

Метод предназначен исключительно для ISBN и не подходит для других идентификаторов (ISSN, EAN, UPC).


Поведение при граничных значениях

  • Пустая строка всегда возвращает false
  • null и undefined не считаются допустимыми значениями
  • строки с лишними пробелами внутри номера считаются допустимыми только при стандартных разделителях

Алгоритмическая основа

Внутри метод использует строго детерминированные алгоритмы:

  • для ISBN-10 применяется взвешенная сумма с убывающими коэффициентами
  • для ISBN-13 используется чередование коэффициентов 1 и 3
  • финальная проверка выполняется через модуль 11 и модуль 10 соответственно

Эта логика обеспечивает устойчивость к ошибкам ввода и защищает от случайных совпадений.


Совместимость и стабильность

Метод isISBN является частью зрелого набора валидаторов и сохраняет обратную совместимость между версиями библиотеки. Поведение функции остаётся предсказуемым, что делает её пригодной для использования в серверных и клиентских приложениях, где требуется строгая проверка структурированных идентификаторов.