翻译这个JavaScript Gibberish好吗?

时间:2012-05-16 15:03:38

标签: javascript regex pattern-matching

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

我开始使用的脚本已过时,所以我不知道语法是否有问题或链接格式是否已更改。有人可以帮我理解这条线的作用,以便对其进行更改吗?

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

2 个答案:

答案 0 :(得分:9)

好的,你要求它:)

启动正则表达式:

  

/

开始小组操作:

  

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

  

奥比多斯。

打开另一个群组运营商:

  

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

  

ASIN。{12}

另一组操作:

  

后跟0个或更多不是斜杠的字符:

  

[^ \ /] *

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

  

(= |%3D)

后跟0个或更多不是斜杠的字符:

  

[^ \ /] *

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

  

\ /)*

如果找到上一个组或者条形右侧的所有内容都匹配,则允许模式匹配:

  

|

匹配文本“redirect”,后跟0个或更多不是斜杠的聊天:

  

重定向[^ \ /] *

匹配任何单个字符,可选地使用文本“tag =”:

  

(标签=)?

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

  

))

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

  

[^ \ /&安培;] +

关闭正则表达式:

  

/

答案 1 :(得分:1)

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

我会描述它与e.c.t匹配的字符串。但它相当复杂,因为它有很多组件。您自己更容易看到它。 expresso为每种模式提供了更多的英语解释