javascript - 如何使用javascript获取类似(参数名称包含)的参数?

标签 javascript regex

我使用以下方法按名称获取参数:

function getParameterByName(name) {
    name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
        results = regex.exec(location.search);
    return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}

我想知道如何更改它以获取包含某些字符串的参数,例如,我想获取包含单词“document”的参数,但整个参数名称不是“document”。

请指教,谢谢。

最佳答案

像这样吗?

 val = location.search.match(/document.*?=([^&]*)/)[1]

虽然我宁愿使用一个函数将整个查询字符串转换为一个对象(如 this one ),然后简单地应用一个过滤器:

params = urlParams()
ks = Object.keys(params).filter(function(k) { return k.indexOf("document") >= 0 })
if(ks)
   value = params[ks[0]];

这样您就可以轻松支持多个参数(如 document1=foo&document2=bar)并避免丑陋的动态正则表达式构造。

在旧版浏览器中,您可以使用它代替 Object.keys/filter:

ks = []
for(var k in params)
     if(k.indexOf("document") >= 0)
        ks.push(k);

关于javascript - 如何使用javascript获取类似(参数名称包含)的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17805810/

相关文章:

regex - 使用带有 sed 的正则表达式分组替换字符

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

javascript - Vue2 v-text 工作不正确

javascript - 未捕获的类型错误 : Cannot read property 'touched' of undefined

javascript - 如何检查javascript对象内部的内容

java - 用于解析 queryString 的正则表达式

regex - 将 Regex 实现到 Access VBA 中以解决密码复杂性

python - 如何使用正则表达式删除字符串上嵌套文本周围的图案文本?

javascript - 为什么 JavaScript 不接受我的 RegExp 结构?

javascript - 我应该如何显示 getUserMedia()