Мне нужно регулярное выражение для проверки номера ISBN, введенного пользователем.
ISBN должен быть строкой, содержащей только:
[10 or 13 digits] and hyphens
Я старался ^[\d*\-]{10}|[\d*\-]{13}$
но это не работает
Мое регулярное выражение соответствует только: 978-1-5661
, 1-56619-90
, 1257561035
Он должен вернуть результаты ниже:
"978-1-56619-909-4 2" => false
"978-1-56619-909-4" => true
"1-56619-909-3 " => false
"1-56619-909-3" => true
"isbn446877428ydh" => false
"55 65465 4513574" => false
"1257561035" => true
"1248752418865" => true
Я действительно ценю любую помощь.
Вы можете использовать это регулярное выражение с положительным взглядом:
^(?=(?:\D*\d){10}(?:(?:\D*\d){3})?$)[\d-]+$
(?=(?:\D*\d){10}(?:(?:\D*\d){3})?$)
является положительным прогнозом, который гарантирует, что у нас есть 10 или 13 цифр на входе.
Других решений пока нет …