JavaScript正则表达式从查询中删除变量

JavaScript正则表达式从查询中删除变量,javascript,regex,Javascript,Regex,我试图从查询字符串中删除一个变量。这是我目前的做法: var str = "http://example.com/tal.php?sec=16&name=xxxx&size=xxxx"; str = str.replace(/([&])name=.*?(&|$)/g,""); 此代码有两个问题: 名称开头和结尾的和都将被删除。我只想去掉一个 当变量名位于查询字符串的开头或结尾时,它也应该起作用 如果第二个&字符与第一个匹配,我如何告诉正则表达式删除第二个&字

我试图从查询字符串中删除一个变量。这是我目前的做法:

var str = "http://example.com/tal.php?sec=16&name=xxxx&size=xxxx";
str = str.replace(/([&])name=.*?(&|$)/g,"");
此代码有两个问题:

  • 名称开头和结尾的
    都将被删除。我只想去掉一个

  • 当变量名位于查询字符串的开头或结尾时,它也应该起作用


如果第二个
&
字符与第一个匹配,我如何告诉正则表达式删除第二个
&
字符?

我建议使用捕获组,然后在回调函数中使用它们来适当地重新插入
&
字符:

([?&])name=.*?($|&)

下面是一个JavaScript片段,显示了所有3个位置的替换过程:

函数removeQueryArg(str){
变量re=/([?&])name=.*($|&)/;
返回str.replace(re,函数(m,grp1,grp2,偏移,输入){
返回grp1==“?”:(grp2==”&“&”:“);
});
}
document.write(删除queryarg()http://example.com/tal.php?name=xxxx&sec=16&size=xxxx“)+”
”+ removeQueryArg('http://example.com/tal.php?sec=16&name=xxxx&size=xxxx“)+”
”+
removeQueryArg('http://example.com/tal.php?sec=16&size=xxxx&name=xxxx'));
我建议使用捕获组,然后在回调函数中使用它们来适当地重新插入
&
字符:

([?&])name=.*?($|&)

下面是一个JavaScript片段,显示了所有3个位置的替换过程:

函数removeQueryArg(str){
变量re=/([?&])name=.*($|&)/;
返回str.replace(re,函数(m,grp1,grp2,偏移,输入){
返回grp1==“?”:(grp2==”&“&”:“);
});
}
document.write(删除queryarg()http://example.com/tal.php?name=xxxx&sec=16&size=xxxx“)+”
”+ removeQueryArg('http://example.com/tal.php?sec=16&name=xxxx&size=xxxx“)+”
”+
removeQueryArg('http://example.com/tal.php?sec=16&size=xxxx&name=xxxx'));
我建议使用捕获组,然后在回调函数中使用它们来适当地重新插入
&
字符:

([?&])name=.*?($|&)

下面是一个JavaScript片段,显示了所有3个位置的替换过程:

函数removeQueryArg(str){
变量re=/([?&])name=.*($|&)/;
返回str.replace(re,函数(m,grp1,grp2,偏移,输入){
返回grp1==“?”:(grp2==”&“&”:“);
});
}
document.write(删除queryarg()http://example.com/tal.php?name=xxxx&sec=16&size=xxxx“)+”
”+ removeQueryArg('http://example.com/tal.php?sec=16&name=xxxx&size=xxxx“)+”
”+
removeQueryArg('http://example.com/tal.php?sec=16&size=xxxx&name=xxxx'));
我建议使用捕获组,然后在回调函数中使用它们来适当地重新插入
&
字符:

([?&])name=.*?($|&)

下面是一个JavaScript片段,显示了所有3个位置的替换过程:

函数removeQueryArg(str){
变量re=/([?&])name=.*($|&)/;
返回str.replace(re,函数(m,grp1,grp2,偏移,输入){
返回grp1==“?”:(grp2==”&“&”:“);
});
}
document.write(删除queryarg()http://example.com/tal.php?name=xxxx&sec=16&size=xxxx“)+”
”+ removeQueryArg('http://example.com/tal.php?sec=16&name=xxxx&size=xxxx“)+”
”+
removeQueryArg('http://example.com/tal.php?sec=16&size=xxxx&name=xxxx'));
解决此问题的简单方法是删除
名称
参数及其前面的问号或符号。如果删除了问号,请用问号替换第一个“与”

s = s.replace(/([?&]name=[^&]*)/, '');
if (s.indexOf('?') == -1) {
  s = s.replace(/[&]/, '?');
}
演示:

功能打印{
文件。写(s+“”);
}
函数deleteName(个){
印刷品;
s=s.replace(/([?&]name=[^&]*)/,“”);
如果(s.indexOf(‘?’)==-1){
s=s.替换(/[&]/,“?”);
}
印刷品;
打印(“”);
}
deleteName('http://example.com/tal.php?name=xxxx&sec=16&size=xxxx');
deleteName('http://example.com/tal.php?sec=16&name=xxxx&size=xxxx');
deleteName('http://example.com/tal.php?sec=16&size=xxxx&name=xxxx');
正文{
字体系列:无衬线;

}
解决此问题的简单方法是删除
名称
参数及其前面的问号或符号。如果删除了问号,请用问号替换第一个“与”

s = s.replace(/([?&]name=[^&]*)/, '');
if (s.indexOf('?') == -1) {
  s = s.replace(/[&]/, '?');
}
演示:

功能打印{
文件。写(s+“”);
}
函数deleteName(个){
印刷品;
s=s.replace(/([?&]name=[^&]*)/,“”);
如果(s.indexOf(‘?’)==-1){
s=s.替换(/[&]/,“?”);
}
印刷品;
打印(“”);
}
deleteName('http://example.com/tal.php?name=xxxx&sec=16&size=xxxx');
deleteName('http://example.com/tal.php?sec=16&name=xxxx&size=xxxx');
deleteName('http://example.com/tal.php?sec=16&size=xxxx&name=xxxx');
正文{
字体系列:无衬线;

}
解决此问题的简单方法是删除
名称
参数及其前面的问号或符号。如果删除了问号,请用问号替换第一个“与”

s = s.replace(/([?&]name=[^&]*)/, '');
if (s.indexOf('?') == -1) {
  s = s.replace(/[&]/, '?');
}
演示:

功能打印{
文件。写(s+“”);
}
函数deleteName(个){
印刷品;
s=s.replace(/([?&]name=[^&]*)/,“”);
如果(s.indexOf(‘?’)==-1){
s=s.替换(/[&]/,“?”);
}
印刷品;
打印(“”);
}
deleteName('http://example.com/tal.php?name=xxxx&sec=16&size=xxxx');
deleteName('http://example.com/tal.php?sec=16&name=xxxx&size=xxxx');
deleteName('http://example.com/tal.php?sec=16&size=xxxx&name=xxxx');
正文{
字体系列:无衬线;

}
解决此问题的简单方法是删除
名称
参数及其前面的问号或符号。如果删除了问号,请用问号替换第一个“与”

s = s.replace(/([?&]name=[^&]*)/, '');
if (s.indexOf('?') == -1) {
  s = s.replace(/[&]/, '?');
}
演示:

f