【问题标题】:Change links in a page that match a certain regular expression with Javascript使用 Javascript 更改与某个正则表达式匹配的页面中的链接
【发布时间】:2017-02-27 21:17:02
【问题描述】:

我想更改我网站的多个链接,但前提是它们与正则表达式匹配。

假设其中一个 url 包含一个重定向,其值如下:

http://www.website.com/?redirect=12345
http://www.website.com/?redirect=22345
http://www.website.com/?redirect=32345

要匹配的正则表达式似乎是:

/redirect=*[1-9][1-9][1-9][1-9][1-9]/gi

我想用一个新值替换匹配项,例如:

http://www.website.com/?redirect=67890

但我不确定如何将其应用于页面上的所有链接,因为我已经很长时间没有使用正则表达式了。我是否需要在 document.getElementsByTagName("a") 中使用某种 for 循环,还是可以直接使用正则表达式应用于所有 url?

【问题讨论】:

  • 好吧,我不太擅长正则表达式,但我知道匹配正则表达式类似于 "/redirect=*[1-9][1-9][1-9][1-9 ][1-9]/gi" 但我不知道如何将它应用到页面上的所有链接,因为我不使用 JS 的正则表达式。
  • 查看我的编辑,我知道要匹配和替换的正则表达式字符串,但是如何将它们应用于页面上的所有 url?我猜它涉及使用 document.getElementsByTagName("a") 但我不确定。

标签: javascript regex url replace


【解决方案1】:

是的,您将需要一个循环来将正则表达式替换应用到纯 JS 的所有链接。

for (var i = 0, links = document.getElementsByTagName("a"), l = links.length; i < l; i++)
{
    links[i].href = links[i].href.replace(/\?redirect=\d+/, '?redirect=67890');
}

linksl 声明为循环变量将在循环时缓存它们的值——这是一种微优化。

【讨论】:

  • 完美,这正是我所需要的。谢谢
猜你喜欢
  • 1970-01-01
  • 2011-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-20
  • 1970-01-01
  • 1970-01-01
  • 2012-12-06
相关资源
最近更新 更多