1

我正在尝试修改和更新旧的 Greasemonkey 脚本,目的是为所有亚马逊链接自动添加会员 ID。当谈到 JavaScript 时,我是一个新手,但我通常很擅长修改任何语言的现有脚本。这里只有一条线,我无法绕开。

我开始的脚本已经过时了,所以我不知道是语法有问题还是链接格式发生了变化。有人可以帮我理解这条线在做什么,以便我可以对其进行更改吗?

const affiliateLink = /(obidos.(ASIN.{12}([^\/]*(=|%3D)[^\/]*\/)*|redirect[^\/]*.(tag=)?))[^\/&]+/i;
4

2 回答 2

9

好吧,你要求的:)

启动正则表达式:

/

开始组操作:

(

搜索文本“obidos”,后跟任何单个字符

奥比都斯

打开另一个组运算符:

(

搜索文本“ASIN”,后跟任意 12 个字符

ASIN。{12}

另一组操作:

(

后跟 0 个或多个非斜杠字符:

[^\/]*

搜索 '=' 字符或 url 编码的 '=' (%3D) 的组操作:

(=|%3D)

后跟 0 个或多个非斜杠字符:

[^\/]*

后跟斜线(并关闭当前组),可以重复 0 次或更多次:

\/)*

如果找到前一个组或匹配栏右侧的所有内容,则允许模式匹配:

|

匹配文本“redirect”,后跟 0 个或多个非斜杠的字符:

重定向[^\/]*

匹配任何单个字符,后跟可选的文本“tag=”:

.(标签=)?

关闭我们目前仍在其中的两个组操作:

))

后跟一个或多个不是斜杠或 & 的字符:

[^\/&]+

关闭正则表达式:

/

于 2012-05-16T15:18:11.590 回答
1

下载 expresso 的副本,它是一个很好的实用程序,并且对所有这些东西都派上用场。然后只需将正则表达式放入其中(起始斜杠和结束斜杠之间的所有内容)。

我将描述它匹配的字符串等,但它相当复杂,因为它有很多组件。你自己看它更容易。expresso 为每个模式提供了更英文的解释

于 2012-05-16T15:08:32.470 回答