Обновление, 2017
@ Леонид заметил, что нашел АСИН BT00LLINKI
.
Хотя ASIN не является строго инкрементным, самые старые ASIN не-ISBN имеют тенденцию иметь больше нулей, чем новые ASIN. Возможно, это было неизбежно, что мы начали бы видеть ASIN без добавления нуля (и что потом, мне интересно ...). Итак, теперь мы ищем «B», за которым следуют девять буквенно-цифровых символов (или ISBN) - к сожалению, «потеря» этого нуля значительно упрощает получение ложного срабатывания.
/^B[\dA-Z]{9}|\d{9}(X|\d)$/
Оригинальный ответ
В Javascript я использую следующее регулярное выражение, чтобы определить, является ли строка правдоподобной ASIN:
/^\s*(B\d{3}\w{6}|\d{9}(?:X|\d))\s*$/
или, не беспокоясь о лишних пробелах или захвате:
/^B\d{2}\w{7}|\d{9}(X|\d)$/
Как уже упоминалось, Amazon на самом деле не раскрывает спецификацию. На практике я видел только два возможных формата ASIN:
- 10-значные ISBN, которые состоят из 9 цифр + последний символ, который может быть цифрой или "X"
- Буква B, за которой следуют две или три цифры, за которыми следуют шесть или семь буквенно-цифровых символов
Если кто-то сталкивался с ASIN, который не соответствует этому шаблону, присоединяйтесь. Возможно, на самом деле возможно получить более строгие ограничения, но я не уверен. ASIN не ISBN могут использовать только подмножество буквенных символов, но даже если это так, они используют большинство из них. Некоторые, кажется, появляются чаще, чем другие, по крайней мере (K, Z, Q, W ...)