簡體   English   中英

刪除字符串JavaScript正則表達式中的字符

[英]remove chars in String javascript Regex

我有這樣的獲取頁面鏈

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

我希望能夠僅具有其值來刪除get request參數。 例如, 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM