set l = index of left most character in word
set r = index of right most character in word
loop while(l < r)
begin
if letter at l does not equal letter at r
word is not palindrome
else
increase l and decrease r
end
word is palindrome
Страницы с подробными сведениями об Amazon могут иметь несколько форм, поэтому вам следует проверить их все. Все они эквивалентны:
http://www.amazon.com/Kindle-Wireless-Reading-Display-Generation/dp/B0015T963C
http://www.amazon.com/dp/B0015T963C
http://www.amazon.com/gp/product/B0015T963C
http://www.amazon.com/gp/product/glance/B0015T963C
Они всегда выглядят так или так:
http://www.amazon.com/<SEO STRING>/dp/<VIEW>/ASIN
http://www.amazon.com/gp/product/<VIEW>/ASIN
Это должно сделать это:
var url = "http://www.amazon.com/Kindle-Wireless-Reading-Display-Generation/dp/B0015T963C";
var regex = RegExp("http://www.amazon.com/([\\w-]+/)?(dp|gp/product)/(\\w+/)?(\\w{10})");
m = url.match(regex);
if (m) {
alert("ASIN=" + m[4]);
}
Поскольку ASIN всегда представляет собой последовательность из 10 букв и / или цифр сразу после косой черты, попробуйте следующее:
url.match("/([a-zA-Z0-9]{10})(?:[/?]|$)")
Дополнительный (?: [/?] | $)
после ASIN должен гарантировать, что используется только полный сегмент пути.
что-то вроде этого должно работать (не тестировалось)
var match = /\/dp\/(.*?)\/ref=amb_link/.exec(amazon_url);
var asin = match ? match[1] : '';
Если ASIN всегда находится в этой позиции в URL:
var asin= decodeURIComponent(url.split('/')[5]);
хотя вероятность того, что ASIN получит% -экранировано.
Статья в Википедии об ASIN (на который я ссылался в вашем вопросе) дает различные формы URL-адресов Amazon. Вы можете довольно легко создать регулярное выражение (или их серию) для получения этих данных, используя метод match ()
.