Javascript getURLParameter和RegExp

Javascript getURLParameter和RegExp,javascript,jquery,regex,Javascript,Jquery,Regex,我对jQuery和javascript非常陌生。我正在努力理解下面的代码。谁能给我解释一下参数“name”应该是什么?是url吗?(即)。您还可以解释location.search.match.RegExp(“[?|&]”+name+'=(.+?)(&|$))的工作原理。如果有人能在一个例子中使用“name”的输入并显示输出,那就太好了 提前非常感谢 $(document).ready(function () { function getURLParameter(name) {

我对jQuery和javascript非常陌生。我正在努力理解下面的代码。谁能给我解释一下参数“name”应该是什么?是url吗?(即)。您还可以解释
location.search.match.RegExp(“[?|&]”+name+'=(.+?)(&|$))
的工作原理。如果有人能在一个例子中使用“name”的输入并显示输出,那就太好了

提前非常感谢

 $(document).ready(function () {

     function getURLParameter(name) {

         return decodeURIComponent(
         (location.search.match(RegExp("[?|&]" + name + '=(.+?)(&|$)')) || [, null])[1]);

     }

 }

name
看起来像查询字符串键,即
http://stackoverflow.com/questions/ask?name=foo

这将导致

console.log(getURLParameter('name')); //foo

该函数的作用是在url中搜索前缀为
(第一个获取参数)或
&
(其余参数)的键,并获取值。

名称
称为函数的参数。调用该函数时,它使用此参数搜索浏览器URL的查询字符串部分,以查找与此
名称
匹配的任何参数,并返回其值。查询字符串被指定为(至少):
?parameter1=value1
,带有任何数量的附加/可选参数,用
分隔,即
?parameter1=value1¶meter2=value2
。如果未找到
name
参数,函数将返回
null


对于正则表达式,它用于搜索上面提到的查询字符串。它查找“?”或“&”后跟
名称
后跟“=”和一个或多个字符。
[]
按字面意思处理里面的每个字符。
|
只是一个标准或运算符。它还将一个或多个字符的值抛出到捕获组中(通过将正则表达式的该部分括在括号中)。最后一位确保它要么是该值之后的字符串结尾,要么在该值后面有一个“&”(很可能后面跟着另一个查询参数和值)。当函数返回
[1]
时,它将返回匹配结果数组中的第二个值,即上述捕获组,或者仅返回
名称
参数的值(如果未找到匹配项,则返回null)。

您的示例非常完美!我现在完全明白了。location.search提供了“?name=foo”,因此当您输入'name'时,函数将返回foo。喜欢您对RegExp的解释!问题:为什么在名称前使用“[]”符号,在名称后使用“()”?这只是标准语法吗?这实际上是编写表达式的人的错误。它应该是:
location.search.match(RegExp(“[?&]”+name+'=(.+?)(?=&$))
。最后一部分是前瞻性的,仅当在这些parethesis中的部分随后被找到时,才与前面的部分匹配。
[]
仅按字面意思处理其中的字符。还可以为所有小写拉丁字符指定“a-z”等范围。如果我们没有编写
[?&]
,我们将不得不用“\”来转义“?”,因为它在正则表达式中有特殊的含义,并且包含or运算符,如:
\?&