【发布时间】:2012-03-03 10:37:17
【问题描述】:
我有一些 JavaScript 可以在亚马逊链接中查找亚马逊 ASIN,例如
http://www.amazon.com/dp/B00137QS28
为此,我使用以下正则表达式:/([A-Z0-9]{10})
但是,我不希望它与看起来像这样的艺术家链接相匹配:
http://www.amazon.com/Artist-Name/e/B000AQ1JZO
所以我需要排除在斜线和 10 个字符的字母数字代码之前有“/e”的任何链接。我认为以下方法可以做到这一点:(?<!/e)([A-Z0-9]{10}),但事实证明,负面的后视在 JavaScript 中不起作用。那正确吗?还有另一种方法可以做到这一点吗?
任何帮助将不胜感激!
作为旁注,请注意有很多亚马逊链接格式,这就是为什么我想列入黑名单而不是白名单的原因,例如,这些都是同一个页面:
http://www.amazon.com/gp/product/B00137QS28/
http://www.amazon.com/dp/B00137QS28
http://www.amazon.com/exec/obidos/ASIN/B00137QS28/
http://www.amazon.com/Product-Title-Goes-Here/dp/B00137QS28/
【问题讨论】:
-
是的,不支持负面的后视。
-
在 JS 中不直接支持负向回溯,但是有一些相当简单的方法可以实现它们的逻辑。 This question 是这类事情的主要问题。我在别处给了a more comprehensive answer。
标签: javascript regex