在Javascript中遇到替换函数的问题

时间:2013-04-20 19:58:16

标签: javascript regex

好的,所以我在javascript中有一些变量......

var link = 'http://8wayrun.com/streams/multi?type=3&pos1=1.teamsp00ky.video&pos2=1.teamsp00ky.chat&pos3=1.nycfurby.chat';
var position = 2;

如你所见,我有一个链接和一个位置。使用position var我想替换链接字段中的一些文本。我想从链接中删除&pos2=1.teamsp00ky.chat。当然,我必须做一些基本的正则表达式;当我尝试在正则表达式中使用位置变量时,问题就出现了。我只是想不出来。

在PHP中,我可以执行以下操作:

preg_replace('/&pos'.$position.'=[^&]*/i', '', $link);

我在JS中尝试了以下内容,但它不起作用:

link.replace(new RegExp('&pos'+position+'=[^&]*'), '');

有人可以帮助我,告诉我我做错了什么吗?另外,我如何使它不区分大小写呢?

3 个答案:

答案 0 :(得分:5)

您需要设置值,而不仅仅是调用方法:

link = link.replace(new RegExp('&pos'+position+'=[^&]*'), '');

要使其不区分大小写,请使用此正则表达式:

new RegExp('&pos'+position+'=[^&]*', "i")

虽然可能使得在“?”上拆分字符串变得更容易,但是将键/值对拆分为“&”,然后将它们拆分为“=”。

答案 1 :(得分:2)

  

有人可以帮助我并告诉我我做错了吗?

replace不会改变字符串,但会返回一个新字符串 - 您必须将其分配到某处。

  

另外,我如何让它不区分大小写呢?

i标记传递给RegExp constructor

link = link.replace(new RegExp('&pos'+position+'=[^&]*', 'i'), '');

答案 2 :(得分:0)

<div id="result"></div>

var link = 'http://8wayrun.com/streams/multi?type=3&pos1=1.teamsp00ky.video&pos2=1.teamsp00ky.chat&pos3=1.nycfurby.chat';
var position = 2;

var start = link.indexOf("pos2");

var end = link.indexOf("&", start);

document.getElementById("result").textContent = link.slice(0, start) + link.slice(end + 1);

on jsfiddle