javascript - 在javascript中用数组解析url

标签 javascript html regex parsing

我有以下格式的 GET 方法输入的 url

rec_test.html?emotion=Happy&myInputs_1%5B%5D=things&myInputs_1%5B%5D=are&myInputs_1%5B%5D=working&myInputs_2%5B%5D=i&myInputs_2%5B%5D=hope&myInputs_3%5B%5D=so

我正在尝试使用以下代码解析它:

function getParameterByName(name){
                    var url = window.location.search;
                    name = name.replace(/[\[\]]/g, "\\$&");
                    var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)");
                    results = regex.exec(url);
                    if (!results) return null;
                    if (!results[2]) return '';
                    return decodeURIComponent(results[2].replace(/\+/g, " "));
                }

但是当我将 myInputs_1 传递给该函数时,它返回 null。

我以某种方式计划以以下格式生成输出:

myInput_1 = ['things', 'are', 'working']
myInput_2 = ['i', 'hope']
myInput_3 = ['so']

但我无法提取单个值。有没有办法达到预期的输出?

编辑_1

我了解到 %5B[%5D],但即使我通过了 myInput_1[] 作为函数的参数,它仍然返回 null,我不知道为什么

最佳答案

您可以使用 URLSearchParams URL 的对象实例:

s = "http://example.com/rec_test.html?emotion=Happy&myInputs_1%5B%5D=things&myInputs_1%5B%5D=are&myInputs_1%5B%5D=working&myInputs_2%5B%5D=i&myInputs_2%5B%5D=hope&myInputs_3%5B%5D=so"

url = new URL(s)
searchParams = url.searchParams

console.log(searchParams.getAll("myInputs_1[]"))
// ["things", "are", "working"]

关于javascript - 在javascript中用数组解析url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46688681/

相关文章:

javascript - js正则表达式提取字母之间的空格。积极回顾?

javascript - 如何获取类内的具体数据?

javascript - Firebase V9 addDoc 未返回成功或失败或写入数据库

html - 容器中的 Twitter Bootstrap 内容未居中

html - CSS 空白 : pre not working as expected

python - 根据字符串中的特定逗号有选择地将字符串拆分为元组列表

javascript - 上下文菜单 - javascript

javascript - D3js 碰撞在一段时间后停止工作

jquery - Bootstrap 4.1.1 导航栏切换器不起作用

带有 json 数据的文本的 PHP 正则表达式