好的,所以我在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+'=[^&]*'), '');
有人可以帮助我,告诉我我做错了什么吗?另外,我如何使它不区分大小写呢?
答案 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