我有一个10位数的字符串传递给我,我想在进行更多处理和/或重定向之前验证它是否是有效的ASIN.
我知道非ISBN ASIN总是非数字的,长度为10个字符
我只是希望能够判断传递的项目是否是有效的ASIN,或者在我已经消除它可能是ISBN之后它只是一个搜索字符串.
例如,"SOUNDBOARD"是搜索词,而"B000J5XS3C"是ASIN,"1412775884"是ISBN.
是否有轻量级方式检查ASIN?
Sem*_*lon 25
@Leonid评论说他找到了ASIN BT00LLINKI.
尽管ASIN似乎并不是严格增量的,但最古老的非ISBN ASIN确实比新的ASIN具有更多的零.也许我们不可避免地开始看到没有零填充的ASIN(然后是什么,我想知道......).所以我们现在正在寻找"B",然后是9个字母数字字符(或ISBN) - 不幸的是,这个零的"损失"使得误报更加容易.
/^B[\dA-Z]{9}|\d{9}(X|\d)$/
Run Code Online (Sandbox Code Playgroud)
在Javascript中,我使用以下正则表达式来确定字符串是否合理地是ASIN:
/^\s*(B\d{3}\w{6}|\d{9}(?:X|\d))\s*$/
Run Code Online (Sandbox Code Playgroud)
或者,不用担心额外的空白或捕获:
/^B\d{2}\w{7}|\d{9}(X|\d)$/
Run Code Online (Sandbox Code Playgroud)
正如其他人所提到的,亚马逊并没有真正透露这一规格.实际上,我只看到了两种可能的ASIN格式:
如果有人遇到了不符合该模式的ASIN,请插入.实际上可能会比这更严格,但我不确定.非ISBN ASIN可能只使用字母字符的子集,但即使如此,它们也会使用大部分字符.有些似乎比其他人更频繁,至少(K,Z,Q,W ...)
小智 0
也许你可以在亚马逊网站上检查 ASIN 是否存在。
http://www.amazon.com/dp/YOUR10DIGITASIN
当产品存在时,此 URL 返回 http-statuscode=200;如果该产品不是有效的 ASIN,则返回 404。