Определите, является ли 10-значная строка действительной. Amazon ASIN

У меня есть 10-значная строка, переданная мне, и я хочу проверить, что она является действующей ASIN, прежде чем делать больше обработки и / или перенаправления.

Я знаю, что не ISBN ASIN всегда будет нечисловым и длиной 10 символов

Я просто хочу узнать, является ли передаваемый элемент действительным ASIN или это просто строка поиска после того, как я уже устранил, что это может быть ISBN.

Например, «SOUNDBOARD» – это термин поиска, а «B000J5XS3C» – ASIN, а «1412775884» – ISBN.

Есть ли легкий способ проверить ASIN?

Solutions Collecting From Web of "Определите, является ли 10-значная строка действительной. Amazon ASIN"

Знаете ли вы, что Amazon предлагает API, в том числе веб-службу Amazon Associates, которая позволяет интерактивно взаимодействовать с Amazon. Я подозреваю, что решит вашу проблему (в некотором роде). Для получения дополнительной информации посетите домашнюю страницу Amazon Web Services .

Обновление, 2017 год

@Leonid прокомментировал, что он нашел ASIN BT00LLINKI .

Хотя ASIN не кажутся строго инкрементальными, самые старые не ISBN ASIN имеют тенденцию иметь больше нулей, чем более новые ASIN. Возможно, было неизбежно, что мы начнем видеть ASIN без нулевого заполнения (и тогда, что интересно …). Итак, теперь мы ищем «B», за которым следуют девять буквенно-цифровых символов (или ISBN) – к сожалению, «потеря» этого нуля значительно облегчает получение ложных срабатываний.

 /^B[\dA-Z]{9}|\d{9}(X|\d)$/ 

Оригинальный ответ

В Javascript я использую следующее regexp, чтобы определить, является ли строка правдоподобной ASIN:

 /^\s*(B\d{3}\w{6}|\d{9}(?:X|\d))\s*$/ 

или, не беспокоясь о дополнительных пробелах или захвате:

 /^B\d{2}\w{7}|\d{9}(X|\d)$/ 

Как отмечали другие, Amazon на самом деле не раскрыла спецификацию. На практике я видел только два возможных формата для ASIN:

  1. 10-значные ISBN, которые имеют 9 цифр + конечный символ, который может быть цифрой или «X»,
  2. В письме B следуют две или три цифры, за которыми следуют шесть или семь буквенно-цифровых символов

Если кто-то столкнулся с ASIN, который не соответствует этому шаблону, включите его. Возможно, на самом деле можно будет получить более ограничительный, чем это, но я не уверен. ASIN не ISBN могут использовать только подмножество буквенных символов, но даже если это так, они используют большинство из них. Некоторые, кажется, появляются чаще, чем другие, по крайней мере (K, Z, Q, W …)

Для PHP существует правильное регулярное выражение для Asins здесь: http://www.sebastianviereck.de/en/php-ueberpruefen-ob-ein-string-eine-valide-asin-ist/ (английская версия)

возможно, вы можете проверить сайт Amazon, существует ли ASIN.

http://www.amazon.com/dp/YOUR10DIGITASIN

этот URL-адрес возвращает код http-statuscode = 200, когда продукт существует, и 404, если это недействительный ASIN.

«этот URL-адрес возвращает код http-statuscode = 200, когда продукт существует, и 404, если это недействительный ASIN».

это НЕ будет работать, поскольку в соответствии с документами ASINs являются специфичными для региона (проверьте это самостоятельно, если не верите). вы можете проверить только ain – скажем – amazon.co.uk на amazon.co.uk, так что вам также нужно знать, откуда приходит ASIN.

однако в вашем случае вам лучше иметь три поля ввода – по одному для каждого поиска. или (намного лучше) в одном поле три переключателя. альтернативно, вы можете проверить строку angainst словаря … но угадание – это все-таки ОЧЕНЬ плохая инженерия.

кроме того, нет легкого способа проверить асин на срок действия