【问题标题】:Extracting a URL parameter value in JavaScript在 JavaScript 中提取 URL 参数值
【发布时间】:2014-08-30 21:10:02
【问题描述】:

我有以下函数(不是我写的)来提取一个 URL 参数值:

function getURLParameter(name) {
    return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search) || [, ""])[1].replace(/\+/g, '%20')) || null
}

我几乎没有使用正则表达式的经验。此代码当前对参数名称进行区分大小写的搜索。我想让 RegExp 对参数名称进行不区分大小写的搜索。有人可以告诉我如何改变它来实现它吗?

【问题讨论】:

  • 也许你应该从 extracting all of the parameters 开始,然后处理不区分大小写的问题——也许调用 map() 来迭代每个参数。
  • 我可能错了,但这看起来已经不区分大小写了......
  • 查看作为RegExp 的第二个参数的正则表达式修饰符。您可以将'i' 作为第二个参数提供给new RegExp 以执行不区分大小写的搜索。
  • 啊,不知道你可以在new RegEx() 电话中做到这一点。酷。

标签: javascript regex


【解决方案1】:

为正则表达式添加i标志(more info):

new RegExp('your regexp', 'i')

【讨论】:

  • 完美运行。谢谢。
  • 你甚至不需要new
【解决方案2】:

这是我一直在使用的东西,它可能会有所帮助,因为我需要做一些非常相似的事情来拉下当前页面 URL 的子字符串,然后传递到一个变量中以在我的几个函数中使用。

这是我的 URL 的通用格式:

file:///Users/myname/folder/teamname.html

这就是我解析它们的方式:

function parseURL() {
  var match = window.location.href.match(/(\w+).html$/);
  if (match) {
    return match[1];
  }
  return null;
}

这将执行此操作:

1) 检查当前页面的 URL 2) 将 URL 解析为数组的两个不同片段:“teamname”和“html” 3)然后我返回 match[1],即“teamname”

我是如何使用它的:

从那里,我为 parseURL 函数声明一个变量,如下所示:

var teamSched = parseURL();

所以现在,我可以使用上面概述的相同 URL 语法对任何页面进行动态调用,以使用来自 parseURL() 的页面特定变量执行特定代码。然后,我使用该变量从我的代码中的对象生成唯一数据集,这些对象的关键匹配由 parseURL() 创建的“团队名称”变量。

如果我错了,肯定有人会纠正我,但这里不应该区分大小写,只要您通过 parseURL 从 URL 中提取的值与变量、对象键等匹配即可。正在尝试访问。

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 2016-04-24
    • 1970-01-01
    • 1970-01-01
    • 2013-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-29
    • 2015-05-30
    相关资源
    最近更新 更多