Javascript正则表达式将%2F替换为%21

Javascript正则表达式将%2F替换为%21,javascript,regex,get,encodeuricomponent,Javascript,Regex,Get,Encodeuricomponent,我需要一个javascript/regex将%2F替换为%21 这样,在将encodeURIComponent()应用于URL后,我可以通过GET参数传递前斜杠 当它到达服务器端时,我将从转换回来!到/ 这不是一个理想的解决方案,但我的重写规则似乎没有任何其他解决方案。您是否尝试过String.replace x = x.replace(/%2F/gi, "%21"); 你试过String.replace吗 x = x.replace(/%2F/gi, "%21"); 好的,我已经解决了这个

我需要一个javascript/regex将%2F替换为%21

这样,在将encodeURIComponent()应用于URL后,我可以通过GET参数传递前斜杠

当它到达服务器端时,我将从转换回来!到/


这不是一个理想的解决方案,但我的重写规则似乎没有任何其他解决方案。

您是否尝试过String.replace

x = x.replace(/%2F/gi, "%21");

你试过String.replace吗

x = x.replace(/%2F/gi, "%21");

好的,我已经解决了这个问题,需要进行大量的研究,因为我没有这里的一些人那么有才华。我想我还是会分享解决方案的

实际上,一旦使用%2F,服务器就会过早地对其进行解码,因此您最终得到的路径是完全错误的

您需要做的是在客户端将%2F替换为%252F

x = x.replace(/%2F/gi, "%252F");
这是%2F的双重编码形式

因此,当它到达服务器时,它会过早地被解码为%2F,而不是正斜杠


不客气。

好的,我已经解决了这个问题,需要进行大量的研究,因为我没有这里的一些人那么有才华。我想我还是会分享解决方案的

实际上,一旦使用%2F,服务器就会过早地对其进行解码,因此您最终得到的路径是完全错误的

您需要做的是在客户端将%2F替换为%252F

x = x.replace(/%2F/gi, "%252F");
这是%2F的双重编码形式

因此,当它到达服务器时,它会过早地被解码为%2F,而不是正斜杠


不客气。

如果您愿意,只需循环字符串并自己替换它们可能会更简单。正则表达式通常用于比这个更复杂的字符串匹配。你认为循环更有效吗?为什么循环?使用
替换
。不过,我认为在这里使用正则表达式没有任何问题。@AmyNeville您可以使用带有
replace
的正则表达式并使用全局标志。没有理由循环。我将其更新为使用正则表达式进行全局替换。请不要使用循环!如果需要,只需循环字符串并自己替换它们可能会更简单。正则表达式通常用于比这个更复杂的字符串匹配。你认为循环更有效吗?为什么循环?使用
替换
。不过,我认为在这里使用正则表达式没有任何问题。@AmyNeville您可以使用带有
replace
的正则表达式并使用全局标志。没有理由循环。我将其更新为使用正则表达式进行全局替换。请不要使用循环!