-1

我在用正则表达式替换 javascript 时遇到问题

这是代码

var link = document.getElementsByTagName('a');
var i = link.length;
   while(i--){
      var lnk = link[i].href;
       lnk.replace('/^http\:\/\/www\.ringtonematcher\.com\/go\/\?sid\=([\w]+)\&/g', 'test');
    }

sid=替换& = sid=测试&

4

2 回答 2

1

我猜你的问题是你没有对replace方法的结果做任何事情。它不会改变任何东西,但会返回一个新字符串。如果您想更改href属性,则需要重新分配它:

var links = document.getElementsByTagName('a');
for (var i=0; i<links.length; i++) {
    var lnk = link[i].href;
    var newlnk = lnk.replace(/^http:\/\/www\.ringtonematcher\.com\/go\/\?sid=(\w+)&/g, 'test$1');
    link[i].href = newlnk;
}

我还修复了您的正则表达式中的一些缺陷:

  • 它需要是正则表达式文字,而不是字符串(删除撇号)
  • 您不需要转义:,=&字符
  • 您不需要将字符类快捷方式包装在字符\w
  • \w+你不想贪婪
于 2012-08-21T22:14:26.660 回答
0

删除“正则表达式模式”周围的引号并分配给变量

var regexed = lnk.replace(/^http\:\/\/www\.ringtonematcher\.com\/go\/\?sid\=([\w]+)\&/g, 'test');
于 2012-08-21T22:13:46.080 回答