更新, 2017
@Leonid评论说,他找到了ASIN。BT00LLINKI
虽然 ASIN 似乎不是严格递增的,但最古老的非 ISBN ASIN 往往比较新的 ASIN 具有更多的零。也许不可避免的是,我们开始看到没有零填充的ASIN(然后呢,我想知道......)。因此,我们现在正在寻找“B”,后跟九个字母数字字符(或ISBN) - 不幸的是,该零的“丢失”使得获得误报变得更加容易。
/^(B[\dA-Z]{9}|\d{9}(X|\d))$/
原始答案
在Javascript中,我使用以下正则表达式来确定字符串是否为或包含看似ASIN的内容:
/^\s*(B\d{2}[A-Z\d]{7}|\d{9}[X\d])\s*$/
或者,无需担心额外的空格或捕获:
/^(B\d{2}[A-Z\d]{7}|\d{9}[X\d])$/
正如其他人所提到的,亚马逊并没有真正透露这个规格。不过,在实践中,我只看到了ASIN的两种可能格式:
- 10 位 ISBN,即 9 位数字 + 最后一个字符(可以是数字或“X”)。
- 字母 B 后跟两位数字,后跟七个 ASCII 范围的字母数字字符(字母字符为大写)。
如果有人遇到不符合该模式的 ASIN,请加入。实际上,有可能比这更严格的限制,但我不确定。非 ISBN ASIN 可能只使用字母字符的子集,但即便如此,它们也会使用其中的大多数。有些人似乎比其他人出现得更频繁,至少(K,Z,Q,W...)