Для ISBN нет простого регулярного выражения, так как переносы являются переменными (см. инструкции переноса ). Что вы могли бы сделать, это удалить все дефисы или пробелы из вашей строки, а затем проверить, имеет ли он длину 10 или 13 цифр (или 9 цифр, заканчивающихся либо x
, либо X
). Однако это не относится к проверке ISBN, так как последняя цифра (или буква, если это [xX]
) является контрольной суммой, которая подтверждает, что ISBN действителен.
Если вы используете Perl, вам нужно использовать модуль Business::ISBN
, который избавит вас от всех этих проблем.