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

What does this regular expression do and what does the function do with it?

本文关键字:什么 函数 正则表达式      更新时间:2023-09-26

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

([^?=&]+)(=([^&]*))?

当我通过正则表达式测试器(Firefox 插件)运行它时,我得到一个 url 的查询字符串的值以一种颜色突出显示,问号和与号根本没有突出显示,其余的用另一种颜色突出显示。

不确定它是否匹配一种颜色或另一种颜色或两者兼而有之,但是我使用替换选项,没有任何内容被替换。

这只是我问题的开始。 完整的代码段是这样的:

var linkObj = new Object();
jQuery(this).attr('href').replace(
    new RegExp( "([^?=&]+)(=([^&]*))?", "g" ),
    function( jQuery0, jQuery1, jQuery2, jQuery3 ){
        linkObj[ jQuery1 ] = jQuery3;
    }
);

函数(jQuery0, jQuery1, jQuery2, jQuery3)中的这 4 个参数是什么?

任何帮助将不胜感激。

谢谢。

似乎分解了 URL 的 GET 部分。

([^?=&]+)      # 1 or more characters, exclusive of ?, = or &
(=             # = sign
  ([^&]*)        # any character not a &, 0 or more times
)?             # but optional

function是一个回调,替换为可以用正则表达式调用接受。每个参数都是在正则表达式匹配中找到的不同值。然后,该函数可以返回 replace 方法应替换为的结果)。因此,给定?foo=bar

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