删除字符串javascript正则表达式中的字符

Dar*_*nix 0 javascript regex jquery

我有一个像这样的连锁页面链

file.php?Valor1=one&Valor2=two&Valor3=three
Run Code Online (Sandbox Code Playgroud)

我希望能够删除只有具有它的值的get请求参数.例如,remove two 结果

file.php?Valor1=one&Valor3=three
Run Code Online (Sandbox Code Playgroud)

试试吧

stringvalue.replace(new RegExp(value+"[(&||\s)]"),'');
Run Code Online (Sandbox Code Playgroud)

Rob*_*sen 5

这是一个匹配&符号(&)的正则表达式,后跟一系列不等于sign([^=]+),等号(=),字面值two以及下一个&符号或行尾的字符(&|$):

/&[^=]+=two(&|$)/
Run Code Online (Sandbox Code Playgroud)

let input = 'file.php?&Valor1=one&Valor2=two&Valor3=three';
let output = input.replace(/&[^=]+=two/, '');

console.log(output);
Run Code Online (Sandbox Code Playgroud)

如果您要从变量中删除值:

let two = 'two';
let re = RegExp('&[^=]+=' + two + '(&|$)');

let input = 'file.php?&Valor1=one&Valor2=two&Valor3=three';
let output = input.replace(re, '');

console.log(output);
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您需要确保您的变量值不包含任何在正则表达式中具有特殊含义的字符.如果是这种情况,您需要正确地逃避它们.

更新
要在更新的问题中解决输入字符串(在第一个参数之前没有&符号):

let one = 'one';
let re = RegExp('([?&])[^=]+=' + one + '(&?|$)');

let input = 'file.php?Valor1=one&Valor2=two&Valor3=three';
let output = input.replace(re, '$1');

console.log(output);
Run Code Online (Sandbox Code Playgroud)