Javascript 这个正则表达式做什么?函数用它做什么?

Javascript 这个正则表达式做什么?函数用它做什么?,javascript,jquery,regex,replace,Javascript,Jquery,Regex,Replace,我在客户端javascript中遇到了以下正则表达式: ([^?=&]+)(=([^&]*))? 当我通过正则表达式测试仪(firefox插件)运行它时,我得到url的查询字符串的值以一种颜色突出显示,问号和符号根本没有突出显示,其余的以另一种颜色显示 我不确定它是匹配一种颜色还是另一种颜色,或者两者都匹配,但是我使用了替换选项,没有任何东西被替换 这只是我问题的开始。完整的代码如下所示: var linkObj = new Object(); jQuery(this).att

我在客户端javascript中遇到了以下正则表达式:

([^?=&]+)(=([^&]*))?
当我通过正则表达式测试仪(firefox插件)运行它时,我得到url的查询字符串的值以一种颜色突出显示,问号和符号根本没有突出显示,其余的以另一种颜色显示

我不确定它是匹配一种颜色还是另一种颜色,或者两者都匹配,但是我使用了替换选项,没有任何东西被替换

这只是我问题的开始。完整的代码如下所示:

var linkObj = new Object();
jQuery(this).attr('href').replace(
    new RegExp( "([^?=&]+)(=([^&]*))?", "g" ),
    function( jQuery0, jQuery1, jQuery2, jQuery3 ){
        linkObj[ jQuery1 ] = jQuery3;
    }
);
函数
中的这4个参数是什么(jQuery0、jQuery1、jQuery2、jQuery3)

任何帮助都将不胜感激


谢谢。

似乎分解了URL的GET部分

([^?=&]+)      # 1 or more characters, exclusive of ?, = or &
(=             # = sign
  ([^&]*)        # any character not a &, 0 or more times
)?             # but optional
函数
是一个回调函数,它可以用正则表达式调用替换accept。每个参数都是在正则表达式匹配中找到的不同值。然后,函数可以返回
replace
方法应替换的结果)。因此,给定
?foo=bar

  • jQuery0-完全匹配
  • jQuery1-第一次捕获(例如
    foo
  • jQuery2-第二次捕获(
    =bar
  • jQuery3-第三个(嵌套)捕获(
    bar
看一看。