我有一個鏈這樣獲取頁面的刪除字符的字符串中的JavaScript正則表達式
file.php?Valor1=one&Valor2=two&Valor3=three
我希望能夠與只具有它的價值刪除的GET請求參數。例如,remove two
結果
file.php?Valor1=one&Valor3=three
與
stringvalue.replace(new RegExp(value+"[(&||\s)]"),'');
我有一個鏈這樣獲取頁面的刪除字符的字符串中的JavaScript正則表達式
file.php?Valor1=one&Valor2=two&Valor3=three
我希望能夠與只具有它的價值刪除的GET請求參數。例如,remove two
結果
file.php?Valor1=one&Valor3=three
與
stringvalue.replace(new RegExp(value+"[(&||\s)]"),'');
嘗試下面是不是等號的正則表達式匹配的符號(&
),接着是一系列字符([^=]+
) ,等號(=
),文字值two
以及下一個和號或行尾(&|$)
:
/&[^=]+=two(&|$)/
let input = 'file.php?&Valor1=one&Valor2=two&Valor3=three';
let output = input.replace(/&[^=]+=two/, '');
console.log(output);
如果你得到的值從變量中刪除:
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);
在這種情況下,你需要確保你的變量值不包含任何具有特殊符號的字符在正則表達式中。如果是這樣的話,你需要正確地逃脫它們。
更新
爲了解決在更新的問題輸入字符串(第一個參數之前沒有和號):
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);
您可以使用RegExp
構造,RegExp
,模板文字&[a-zA-Z]+\\d+=(?=${remove})${remove})
匹配"&"
後跟「az」,「AZ」,後跟一個或多個數字後跟""
,其次是匹配的值傳遞給.replace()
var str = "file.php?&Valor1=one&Valor2=two&Valor3=three";
var re = function(not) {
return new RegExp(`&[a-zA-Z]+\\d+=(?=${not})${not}`)
}
var remove = "two";
var res = str.replace(re(remove), "");
console.log(res);
var remove = "one";
var res = str.replace(re(remove), "");
console.log(res);
var remove = "three";
var res = str.replace(re(remove), "");
console.log(res);
我覺得更清潔的解決方案是使用URLSearchParams api
var paramsString = "Valor1=one&Valor2=two&Valor3=three"
var searchParams = new URLSearchParams(paramsString);
//Iterate the search parameters.
//Each element will be [key, value]
for (let p of searchParams) {
if (p[1] == "two") {
searchParams.delete(p[0]);
}
}
console.log(searchParams.toString()); //Valor1=one&Valor3=three
你能包括你試過'RegExp'在問題? – guest271314