[英]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.