Greasemonkey脚本将具有特定域的页面上的所有URL替换为不同的URL

时间:2017-08-31 12:09:36

标签: javascript regex greasemonkey

我想替换网站https://www.reddit.com/r/videos/上具有不同域名的youtube.comyoutu.be域名的所有链接

我创建了这个脚本,成功地将所有youtube.com替换为youpak.com,但youtu.be链接因某些原因未被替换

// ==UserScript==
// @name        replace r/videos youtube with youpak
// @namespace   test
// @include     https://www.reddit.com/r/videos/
// @version     1
// @grant       none
// ==/UserScript==

var links = document.getElementsByTagName('a');
var regexFull = /^https:\/\/www\.youtube\.com\/(.*)$/i;
var regexShort = /^https:\/\/\.youtu\.be\/(.*)$/i;
for (var i = 0; i < links.length; i++) {
  links[i].href = links[i].href.replace(regexFull, 'https://www.youpak.com/$1');
  links[i].href = links[i].href.replace(regexShort, 'https://www.youpak.com/watch/?v=$1');
}

regexFull规则的示例网址为https://www.youtube.com/watch?v=L4iyPXHM89E

我希望将此网址更改为https://www.youpak.com/watch?v=L4iyPXHM89E

此作品

regexShort规则的示例网址为https://youtu.be/MkPU6P9OJv4https://youtu.be/MkPU6P9OJv4?t=10

我希望此网址分别更改为https://www.youpak.com/watch?v=MkPU6P9OJv4https://www.youpak.com/watch?v=MkPU6P9OJv4?t=10

这不起作用

1 个答案:

答案 0 :(得分:1)

如果没有转义,则regexShort URL看起来像

left_join(df, df %>% mutate(monthvec = monthvec + 1) %>% unique(), by = "monthvec")

#    monthvec growth.x growth.y
# 1         1      0.3       NA
# 2         1      0.3       NA
# 3         2      0.5      0.3
# 4         2      0.5      0.3
# 5         3      0.7      0.5
# 6         3      0.7      0.5
# 7         3      0.7      0.5
# 8         4      0.1      0.7
# 9         4      0.1      0.7
# 10        4      0.1      0.7
# 11        5      0.6      0.1
# 12        5      0.6      0.1
# 13        5      0.6      0.1

正如你所看到的,'youtu'之前还有一个额外的点不应该存在。

尝试:

^https://.youtu.be/(.*)$