Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
URI转义Javascript中的斜杠数_Javascript - Fatal编程技术网

URI转义Javascript中的斜杠数

URI转义Javascript中的斜杠数,javascript,Javascript,我正在尝试为所有“%2F”字符串专门为搜索项设置替换。我已经通过EnCuduriComponent(搜索项)运行了搜索项,只需对%2Fs进行双重转义 如果搜索词为“ac/dc”,我希望结果为:ac%252Fdc 我可以像这样很快做到: search_term = encodeURIComponent(search_term); search_term = search_term.replace("%2F", "%252F"); search_term = encodeURIComponent(

我正在尝试为所有“%2F”字符串专门为搜索项设置替换。我已经通过EnCuduriComponent(搜索项)运行了搜索项,只需对%2Fs进行双重转义

如果搜索词为“ac/dc”,我希望结果为:ac%252Fdc

我可以像这样很快做到:

search_term = encodeURIComponent(search_term);
search_term = search_term.replace("%2F", "%252F");
search_term = encodeURIComponent(search_term);
search_term = search_term.replace(new RegExp("%2F", 'g'), "%252F");
但是,这不适用于ac//dc,它返回:

ac%252F%2Fdc
当我想要的是:

ac%252F%252Fdc
我可以通过运行这样的替换来解决这个问题

search_term = search_term.replace("%2F%2F", "%252F%252F");
这是不可伸缩的。我想知道为什么第一次替换不是同时替换两个“%2F”字符串


谢谢。

您需要将替换设置为全局,如下所示:

search_term = encodeURIComponent(search_term);
search_term = search_term.replace("%2F", "%252F");
search_term = encodeURIComponent(search_term);
search_term = search_term.replace(new RegExp("%2F", 'g'), "%252F");
我知道这很可怕,但它确实有效


编辑:正如Rob W所建议的,最好使用正则表达式文字来执行此操作:

search_term = encodeURIComponent(search_term);
search_term = search_term.replace(/%2F/g, "%252F");

可能的重复在开始时,您说希望结果为“ac%252Fdc”,然后您说“我想要的是:ac%252F%252Fdc”-你能澄清一点吗?软件人-请注意,搜索词在示例之间发生了变化…使用正则表达式文字而不是正则表达式构造函数来表示常量正则表达式:
/%2F/g
。谢谢-我是正则表达式新手-看起来需要一些阅读!!!。我会尽快接受的