2017-04-15 266 views
0

我有一個鏈這樣獲取頁面的刪除字符的字符串中的JavaScript正則表達式

file.php?Valor1=one&Valor2=two&Valor3=three 

我希望能夠與只具有它的價值刪除的GET請求參數。例如,remove two 結果

file.php?Valor1=one&Valor3=three 

stringvalue.replace(new RegExp(value+"[(&||\s)]"),''); 
+0

你能包括你試過'RegExp'在問題? – guest271314

回答

5

嘗試下面是不是等號的正則表達式匹配的符號(&),接着是一系列字符([^=]+) ,等號(=),文字值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);

+0

如果值2來自一個變量,串聯將如何? – DarkFenix

+0

不知道你的意思。 –

+0

對不起,編寫問題時發生錯誤是一個&更多,如果我想刪除一個值,不要執行替換。可以通過更多的 – DarkFenix

1

您可以使用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);

0

我覺得更清潔的解決方案是使用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 
相關問題